ChatGPT刷力扣面试题01.01:判定字符是否唯一

Java解法:

方法一:我们可以使用一个HashSet来存储已经遍历过的字符,如果遍历到的字符已经存在于HashSet中,则说明字符串中有重复字符,返回false;否则,将字符加入HashSet中。最后,如果遍历完字符串仍然没有发现重复字符,则返回true。

Java代码实现如下:

class Solution {

public boolean isUnique(String s) {

HashSet set = new HashSet<>();

for (int i = 0; i < s.length(); i++) {

char c = s.charAt(i);

if (set.contains(c)) {

return false;

}

set.add(c);

}

return true;

}

}

方法二:如果不使用额外的数据结构,可以使用位运算来解决。我们可以使用一个整数来表示26个小写字母,每一位代表一个字母是否出现过。初始时,整数为0,表示没有字母出现过。遍历字符串中的每个字符,计算出字符与 ‘a’ 的差值,然后将1左移差值位,得到一个只有对应字母位为1的整数。将这个整数与之前的整数进行与运算,如果结果不为0,则说明该字母之前已经出现过,返回false;否则,将之前的整数与该整数进行或运算,表示该字母已经出现过。最后,如果遍历完字符串仍然没有发现重复字符,则返回true。

Java代码实现如下:

public class Solution {

public boolean isUnique(String s) {

int bitmap = 0;

for (int i = 0; i < s.length(); i++) {

int diff = s.charAt(i) - 'a';

int bit = 1 << diff;

if ((bitmap & bit) != 0) {

return false;

}

bitmap |= bit;

}

return true;

}

}

C++解法

上述是简化后的算法场景,对于实际开发应缜密考虑更多实际情况进行if判断


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部