58同城,春招笔试题:求n个相同字串(O(n))
package com.tangbaobao.baidu;
import org.junit.Test;
/**
* 58笔试题
*
* @author tangyaya8
* @create 2018/04/02
**/
public class FiveEight {
@Test
public void fun1() {
String string = "aaaajjddddinfdfyyyy2222";
int n = 4;
this.isExitString(string, n);
}
/**
* 是否有存在n个连续的字符串
* 编程题1:输入一个字符串,输入整数n,找出长度为n的相同字符构成的子串。
* @param string
* @param n
*/
public void isExitString(String string, int n) {
//定义两个指针
int start = 0;
int end = 1;
//记录字符串
StringBuffer temp = new StringBuffer();
char[] chars = string.toCharArray();
temp.append(chars[start]);
while (start < chars.length && end < chars.length) {
if (chars[start] == chars[end]) {
end++;
temp.append(chars[start]);
//处理最后的情况
if(end == chars.length && temp.length() == n){
System.out.println("(" + start + "," + (end-1) + "," + temp + ")");
}
} else {
if (temp.length() == n) {
System.out.println("(" + start + "," + (end-1) + "," + temp + ")");
}
start = end - 1;
start++;
end++;
temp = new StringBuffer();
temp.append(chars[start]);
}
}
}
}
写的有点累赘,😂
#春招#