程序员面试金典 - 面试题 01.01. 判定字符是否唯一(位运算,牛)
生活随笔
收集整理的這篇文章主要介紹了
程序员面试金典 - 面试题 01.01. 判定字符是否唯一(位运算,牛)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
實現一個算法,確定一個字符串 s 的所有字符是否全都不同。
示例 1: 輸入: s = "leetcode" 輸出: false 示例 2: 輸入: s = "abc" 輸出: true限制: 0 <= len(s) <= 100 如果你不使用額外的數據結構,會很加分。來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/is-unique-lcci
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
- 題目說不要使用數據結構,位運算登場
- 申請2個64位int,字符最多128位(可見的字符ASCII碼是32-126)
- 1位移n位&操作,只獲取該位,接著^操作,=1,說明沒出現,=0說明重復
上面程序的1要定義為long long,不然報以下錯誤。
Line 16: Char 25: runtime error: shift exponent 51 is too large for 32-bit type 'int' (solution.cpp)位移數超過32位int
系統各種整型的位數,請參考以下程序獲取:
#include "stdio.h" int main() {printf("Int是%d位\n",sizeof(int)*8);printf("uInt是%d位\n",sizeof(unsigned int)*8);printf("Long是%d位\n",sizeof(long)*8);printf("uLong是%d位\n",sizeof(unsigned long)*8);printf("LL是%d位\n",sizeof(long long)*8);printf("uLL是%d位\n",sizeof(unsigned long long)*8); }總結
以上是生活随笔為你收集整理的程序员面试金典 - 面试题 01.01. 判定字符是否唯一(位运算,牛)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 38. 报数
- 下一篇: LeetCode 874. 模拟行走机器