您的位置:首页 > 其它

查找字符串中是否包含相同字符

2017-01-20 16:21 267 查看
/**
* 题目:
* 请实现一个算法,确定一个字符串的所有字符是否全都不同。
* 这里我们要求不允许使用额外的存储结构。
* 给定一个string,iniString,请返回一个bool值:
* True代表所有字符全都不同,False代表存在相同的字符。
* 保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。
* 测试样例:
* "aeiou" 返回:True "BarackObama" 返回:False
* */
public class DifferentString {

public boolean checkDifferent(String iniString) {
/**
* “(.)”表示一个捕获组,“\\1”表示一个反向引用,
* 也就是说“\\1”与“(.)”这两个位置的值可以相同,其他位置都是".*",
* 表示匹配0~n个任意字符。总的来说,这个正则表达式是匹配出现重复字符的字符串。
* */

/**
* .:代表任意一个字符
* .*:代表任意一个字符后面有0个或多个字符
* (.):选择字符中任意一个字符进行复制,和后面的(.*\\1)结合进行判断是否后面存在一个字符与它相同
* (.)(.*\\1):匹配案例 a*a(即首尾相同的abcsa)
* (.)(.*\\1).*:匹配案例 a*a*
* .*(.)(.*\\1):匹配案例 *a*a
* .*(.)(.*\\1).*:匹配案例 *a*a*
* */
return iniString.matches(".*(.)(.*\\1).*");
}

public static void main(String[] args) {
DifferentString diff = new DifferentString();
String iniString = "abcd";
boolean f = diff.checkDifferent(iniString);
System.out.println(f);
}

}

/**
* 输出:
* false
* */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: