题目描述:
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。
示例1:
输入: s = "leetcode"
输出: false
示例2:
输入: s = "abc"
输出: true
限制:
0 <= len(s) <= 100
如果你不使用额外的数据结构,会很加分。
思路分析:
看到题目,我们首先想到的应该是把字符串转为字符数组来处理,这确实是个方法,但题目限制了不使用额外的数据结构,那么我们应该怎么办呢。可以使用String
自带的三个方法:
-
charAt(int index)
返回字符串中指定位置的字符;(注意字符串中第一个字符索引是0,最后一个是length()-1)。 -
indexOf(int ch/String str)
从字符串起始位置向末尾位置查找当前字符串中字符或子串,返回字符或子串在当前字符串中从左边起首次出现的位置,若没有出现则返回-1。 -
lastIndexOf(int ch/String str)
从字符串末尾位置向起始位置查找当前字符串中字符或子串,返回字符或子串在当前字符串中从左边起首次出现的位置,若没有出现则返回-1。
我们可以利用charAt()
方法截取字符串中的字符,再把改字符作为参数调用indexOf()
、lastIndexOf()
方法,对比返回的字符索引是否相同来判断该字符是否重复。
代码实现:
class Solution {
public boolean isUnique(String astr) {
if (astr.length() == 1 || astr.length( 0 ){
return true;
}
boolean sign = true;
for (int i = 0; i < astr.length()-1 ; i++) {
if (astr.indexOf(astr.charAt(i)) != astr.lastIndexOf(astr.charAt(i))){
sign = false;
}
}
return sign;
}
}