程序员面试金典 01.01. 判定字符是否唯一

实现一个算法,确定一个字符串 s 的所有字符是否全都不同。
https://leetcode.cn/problems/is-unique-lcci/

示例 1:

输入: s = "leetcode"
输出: false
示例 2:

输入: s = "abc"
输出: true
限制:

0 <= len(s) <= 100
s[i]仅包含小写字母
如果你不使用额外的数据结构,会很加分。

先把输入字符串 拆分成 字符数组
假设字符串长度为n

解法1 :
从第一个字符开始在数组中遍历查询
第一个找完了, 就从第二个开始
直到第n-2个
这个遍历过程中, 如果找到重复的字符就认为不唯一
没有找到, 就认为是唯一的
时间复杂度 : O(n^2), 空间复杂度 O(n)

解法2:
建立一个map/长度为26的数组
把输入字符映射到上述数据结构中
如果同一个key/数组index下, 数据的统计数大于1, 则认为不唯一
否则就是唯一的

class Solution { public boolean isUnique(String astr) { if(astr==null||astr.length()==0){ return true; } char[] chars = astr.toCharArray(); int[] position = new int[26]; for(char a : chars){ int index = (int)(a-'a'); if(position[index]==0){ position[index] = 1; }else{ return false; } } return true; } }

posted @ 2022-06-22 07:43  Appinn  阅读(38)  评论(0编辑  收藏  举报