Java 如何检查字符数组中是否存在特定的字符序列
我有两个字符数组: 充满某个词的人。 例如Java 如何检查字符数组中是否存在特定的字符序列,java,arrays,Java,Arrays,我有两个字符数组: 充满某个词的人。 例如char[]word={'j','a','v','a'} 第二个是给定大小的,由从“a”到“z”的随机字符填充 我需要计算一个单词在第二个数组中存在的次数。 例如,假设第二个数组是:{'w','j','a','v','a'} 对于给定的示例,函数应该返回1,因为单词“java”在数组中只出现一次 这是我的密码 私有静态int-zad4(){ char[]word={'j','a','v','a'}; char[]arr=新字符[100]; //从a到z
char[]word={'j','a','v','a'}代码>
第二个是给定大小的,由从“a”到“z”的随机字符填充
我需要计算一个单词在第二个数组中存在的次数。
例如,假设第二个数组是:{'w','j','a','v','a'}
对于给定的示例,函数应该返回1,因为单词“java”在数组中只出现一次
这是我的密码
私有静态int-zad4(){
char[]word={'j','a','v','a'};
char[]arr=新字符[100];
//从a到z的随机字符
对于(int i=0;i
当我将arr设置为与单词相同时,它返回预期值,但当我将arr设置为{'j','a','v','a','j','a','v','a'}代码>返回3,但我希望2可以首先迭代arr,如果第一个字符匹配,则开始单词检查
private static int zad4() {
char[] word = {'j', 'a', 'v', 'a'};
char[] arr = new char[100];
// random characters from a to z
for (int i = 0; i < arr.length; i++) {
arr[i] = (char)('a' + Math.random() * ('z' - 'a' + 1));
}
int countWord = 0;
for (int i = 0; i < arr.length; i++) {
if(arr[i] == word[0]) {
boolean matches = true;
for(int j = 0; j < word.length; j ++) {
matches = word[j] == arr[i + j];
if(!matches)
{
break;
}
}
if(matches) {
countWord ++;
i += word.length - 1;
}
}
}
return countWord;
}
private static int zad4(){
char[]word={'j','a','v','a'};
char[]arr=新字符[100];
//从a到z的随机字符
对于(int i=0;i
首先,我将生成word
和arr
方法参数。在本地生成它们会使代码很难测试和调试。其次,当您成功到达单词末尾时,可以增加计数。大概
private static int zad4(char[] word, char[] arr) {
int countWord = 0;
for (int p = 0; p < arr.length; p++) {
for (int i = 0; i < word.length && p + i < arr.length; i++) {
if (word[i] != arr[p + i]) {
break;
} else if (i + 1 == word.length) {
countWord++;
}
}
}
return countWord;
}
获得(如预期的那样)
将字符数组转换为字符串,然后按照下面的说明:@austinwernli我想这是一个家庭作业,重点是研究算法(公平地说,如果OP能说明这一点就好了)。我需要使用数组,因为这是关于数组的家庭作业问题。当我可以使用字符串时,你应该反转你的循环:首先迭代arr,然后迭代单词;嵌套循环迭代每对i,j
,其中i
完全独立于j
。实际上,您所做的是计算word
中任意位置的字母与arr
中任意位置的字母匹配的次数,而不要求word
中的字母都出现,更不用说它们都连续出现了。试着先用纸和笔的例子来解决这个问题。
System.out.println(zad4("java".toCharArray(), "javajavajava".toCharArray()));
System.out.println(zad4("java".toCharArray(), "javajava".toCharArray()));
System.out.println(zad4("java".toCharArray(), "java".toCharArray()));
System.out.println(zad4("java".toCharArray(), "ja".toCharArray()));
3
2
1
0