public class AnagarmApp {
static int size;
static int count;
static char[] arrChar = new char[100];
public static void main(String[] args) {
String input = "cat";
size = input.length();
count = 0;
for (int j = 0; j < size; j++){
arrChar[j] = input.charAt(j);
}
doAnagram(size);
}
/**
* 利用递归,循环替换字母的位置
* @param newSize 递归执行后的新参数
*/
public static void doAnagram(int newSize){
if (newSize == 1){
return;
}
for (int j = 0; j < newSize; j++){
doAnagram(newSize - 1);
//如果参数为2 则输出。
if (newSize == 2){
displayWord();
}
//换位方法
rotate(newSize);
}
}
/**
* 将数组中的字母移动,n-1 = n
*
* @param newSize 递归后的数组大小参数
*/
public static void rotate(int newSize){
int j;
//获取起始位置
int position = size - newSize;
//获取起始位置的值
char temp = arrChar[position];
//移动
for (j = position + 1; j < size; j++){
arrChar[j-1] = arrChar[j];
}
arrChar[j-1] = temp;
}
public static void displayWord(){
System.out.print(++count + " ");
for (int j = 0; j < size; j++){
System.out.print(arrChar[j]);
}
}
}
分享到:
相关推荐
词典变位词检索系统是一种基于数据结构和查找算法的应用,其主要目的是在给定的词汇库中查找与目标单词形成变位词的其他单词。变位词是通过改变单词中字母顺序而形成的新的单词,例如英语单词 "said" 和 "dais" 就是...
当需要判断两个单词是否为变位词时,对这两个单词排序并查询AVL树,如果它们在树中的键相同,则是变位词。 4. 操作步骤: - 初始化AVL树:创建空的AVL树。 - 读取文件:逐行读取`vocabulary.txt`文件中的单词。 ...
- 变位词是指由相同字符组成的单词,排序后相同的即为变位词。可以利用哈希表或排序来快速确定两个单词是否为变位词,并进行集合操作。 4. **指数增长的72法则** - 在投资中,当年利率r乘以投资年数y等于72时,...
- 变位词的概念是两个单词由相同的字母组成,但顺序不同。检测变位词的关键在于比较两个单词中各字母出现的次数。如果所有字母计数相同,则它们是变位词。这里可能使用到了如`tolower()`这样的标准库函数来处理大小...
- 字符串比较,如判断是否为变位词。 - 长度最长的公共子串。 - 旋转字符串的操作。 - 验证回文字符串。 - 最长回文子串。 - 野卡匹配,匹配字符串模式。 - 从字符串中提取最后一个单词。 - 计数和说(Count...
变位词是指由相同的字母按照不同顺序组成的单词或短语。变位词检测可以通过排序后比较或使用哈希表来实现。 **Python数据结构的性能** Python提供了多种内置数据结构,如列表(List)、字典(Dictionary)等。这些数据...
3.13 变位词 3.14 简化系统路径 3.15 最后一个单词的长度 3.16 反转字符串中的单词 3.16.1 字符串前后和中间可能存在多个空格 3.16.2 不存在前后和中间的多余空格 3.17 一个编辑距离 4. 栈 4.1 验证括号的正确性 4.2...
三种方法检测变位词Anagram 构建堆 二分查找 二叉查找树 二叉树 冒泡排序 英语单词拼写检查算法 几个小的动态规划问题 Hash及常见操作 插入排序 归并排序 解析树ParseTree 队列 快排 基数排序 一些...
3. **字符串哈希**:如“两字符串是否互为变位词”(Anagram),需要计算字符串的哈希值来判断是否为变位词。 4. **正则表达式匹配**:“实现一个简单的正则表达式匹配器”(Regular Expression Matching),涉及到...