【发布时间】:2016-01-11 19:13:48
【问题描述】:
如果我有一个字符串“SSSAAADDDCCC”,我将如何只打印“SADC”。可以使用 SubString 完成还是必须使用 charAt()?
【问题讨论】:
标签: java
如果我有一个字符串“SSSAAADDDCCC”,我将如何只打印“SADC”。可以使用 SubString 完成还是必须使用 charAt()?
【问题讨论】:
标签: java
有一种简单的方法可以做到这一点 - 但是,由于我没有看到任何代码,也没有看到您付出的任何努力,所以我不会只给您答案。下面是一些伪代码,您可以尝试找到正确的答案。祝你好运!
currentChar = myString.charAt(0);
i = 0;
print current character //as per comments, cover the base case
while(string has more characters)
if current character != next character
print next character
i++
【讨论】:
abc 这样的字符串,因为看起来只有b 和c 会被打印出来。
使用正则表达式将所有重复字符替换为单个字符:
"SSSAAADDDCCC".replaceAll("(.)\\1+", "$1") // returns "SADC"
(.) 匹配并捕获一个字符。\\1+ 匹配一个或多个捕获字符的实例。$1 用捕获的字符替换整个匹配值.
不重复的字符不匹配,因此被单独留下。
【讨论】:
如果你不喜欢 charAt 方法,你可以使用这样的子字符串:
int j=0;
String in="sssdddaaaccc";
String out="";
for(int i=0;i<4;i++)
{
out=out+in.subString(j,j+1);
for(j=j; j<3;j++);
}
System.out.println(out);
【讨论】: