LeeCode刷题记录5------判定字符是否唯一(简单)(面试题)

题目描述:

实现一个算法,确定一个字符串 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;
    }
}

你可能感兴趣的:(LeeCode刷题记录5------判定字符是否唯一(简单)(面试题))