我有一个数组,例如,它包含值123456,显然它包含3个以上的连续值。
我想要一个方法,如果数组中至少包含3个连续的值,它将返回true,提前谢谢。
例如:
972834 -返回真(234)
192645 -返回true (456)
等等等等。
更新!:
我在java中有一个数组,它接受6个整数。例如nextTurn[],它在对数组进行排序时包含8 4 2 5 6 5-2 4 5 5 6 8
如果数组中有3个连续的数字,我如何让它返回true?
所以它会找到4 5 6
我还希望它返回整数在数组中的位置,因此对于原始数组8 4 2 5 6 5
它将返回,2 4 5或2 5 6
谢谢你们的帮助,非常感谢
发布于 2011-02-09 10:51:18
最直接的解决方案是简单地循环遍历这些项目,并检查下两个项目:
bool HasConsecutive(int[] a){
for(int i = 0; i < a.Length - 2; i++) {
if (a[i + 1] == a[i] + 1 && a[i + 2] == a[i] + 2) return true;
}
return false;
}另一种解决方案是遍历项目并计算连续项目的数量:
bool HasConsecutive(int[] a){
int cnt = 1;
for (int i = 1; i < a.Length; i++) {
if (a[i] == a[i - 1] + 1) {
cnt++;
if (cnt == 3) return true;
} else {
cnt = 1;
}
}
return false;
}发布于 2011-02-09 10:49:57
我猜应该是家庭作业。
在伪代码中,您将需要类似于
for int i = 0 to array.length - 2
temp = array[i]
if((array[i+1] == (temp + 1)) && (array[i+2] == (temp + 2)))
return true
else return false编辑:这是假设你有一个整数数组。如果它是一个字符串,则必须使用类似于charAt(位置)的内容,然后通过减去'0‘或使用parseInteger函数将字符转换为十进制数
误导性部件上的更新
为此,为了简单起见,我将创建一个与字符串长度相同的数组
int arr[array.length];然后遍历字符串数组中的每一项,同时在数字所在的位置递增arr
(假设是字符数组,一位数) for( int i= 0;i< array.length;i++ ) arr[arrayi - '0']++;
然后对三个连续的数字进行arr检查
for( int i = 0; i < arr.length - 2; i++ )
if( arr[i] >= 1 && arr[i+1] >= 1 && arr[i+2] >= 1 )
return true;
return false;发布于 2011-02-09 11:40:21
h = new hash table
for i in array
if i + 1 in h && i + 2 in h
return i, i+1, i+2
add i to h
return no-matchhttps://stackoverflow.com/questions/4940799
复制相似问题