就是比如给定一个字符串
比如“abcdrtyyacde”
我们需要判断在这个字符串里是否出现重复的字符
首先我们肯定会想到用两个循环,外层循环遍历串中的每一个字符,然后再通过内层循环从每一层外层循环后逐次判断比较是否有相同的串。
代码实例
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "abcdebxyzzfwe";
/* 传统方法
for(int i = 0;i<s.length();i++)
{
char c = s.charAt(i);
for(int j = i+1;j<s.length();j++)
{
if(s.charAt(j) == c)
{
System.out.println("找到了重复的字符为:"+c);
}
}
} */
结果:
其实我们使用一个Java中String类库的一种方法可以减少一层循环,对于字符串长度过大的字符串效率会比循环简单
那就是String提供的lastIndexOf这个方法,什么作用呢,就是从字符串末尾开始找到指定的字符所在的位置(下标),如果有重复的字符,那么返回的下标必然与之前从头扫描的不同,这样可以使得效率更高,
代码:
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "abcdebxyzzfwe";
for(int i = 0;i<s.length();i++)
{
char c = s.charAt(i);
if(s.lastIndexOf(c) != i) //从后面向前扫描如果发现同一个字符有不同的位置,那么可以判断该字符重复
{
System.out.println("找到了重复的字符为:"+c);
}
}
}
}
结果和上面是一样的。Java对字符串的处理相当广泛,有兴趣的可以查一下JavaAPI文档