我对如何检查一个字符串是否包含多次相同的字母有点困惑。如何检查一个字符串是否多次包含相同的字母?
ArrayList<String> words = new ArrayList<String>();
words.add("zebra");
words.add("buzzer");
words.add("zappaz");
比方说,我只想打印出包含不止一个“Z”任何言语,因此只能“蜂鸣器”和“zappaz”会得到印。我将如何做到这一点?
我对如何检查一个字符串是否包含多次相同的字母有点困惑。如何检查一个字符串是否多次包含相同的字母?
ArrayList<String> words = new ArrayList<String>();
words.add("zebra");
words.add("buzzer");
words.add("zappaz");
比方说,我只想打印出包含不止一个“Z”任何言语,因此只能“蜂鸣器”和“zappaz”会得到印。我将如何做到这一点?
一个聪明的解决办法是,除去要的字符搜索并比较结果字符串的长度与完整字符串。
ArrayList<String> words = new ArrayList<String>();
words.add("zebra");
words.add("buzzer");
words.add("zappaz");
for (String word : words) {
// calculate the length difference
if (word.length() - word.replace("z", "").length() > 1) {
System.out.println(word);
}
}
会打印:
buzzer
zappaz
效率不高,但它的工作原理是非常简单的。
+1或if(word.split(“z”,-1).length> 2) '更短。 –
indexOf
返回...与一个字符索引中的字符串。它还需要一个可选的参数指定搜索的位置。如果没有匹配,则返回-1
。因此,只要用两次:
s.indexOf(letter, s.indexOf(letter) + 1) > -1
(出于效率的缘故,不过,可能还有check the first result)
噢......我想要这顶帽子......你是怎么得到它的? –
@dystroy:就像平民主义徽章一样,除非更容易。这是所有;) – Ryan
该死的......我现在试着不被接受:\ –
public static void main(String[] args) {
String s = "bazzer";
String news = s.replaceAll("z", "");
if(news.length() < s.length() -1){
System.out.println(s);
}
}
非常好的解决方案:) –
您是否对z翻倍或任何加倍的字母感兴趣? –
你尝试过什么吗? – fge
我只对在字符串中出现多次的“z”感兴趣,而不是双字母。我有办法做到这一点,但它是非常漫长和杂乱的,它遍历字母的字符:/但我认为必须有更好的方法 – rednaxela