《Cracking the Coding Interview》——第1章:数组和字符串——题目1

2014-03-18 01:25

题目:给定一个字符串,判断其中是否有重复字母。

解法:对于可能有n种字符的字符集,用一个长度为n的数组统计每个字符的出现次数,大于1则表示有重复。

代码:

 1 // 1.1 Implement an algorithm to determine if a string has all unique characters. What if you cannot use additional data structure?

 2 #include <cstdio>

 3 #include <cstring>

 4 using namespace std;

 5 

 6 class Solution {

 7 public:

 8     bool isAllUnique(const char *s) {

 9         if (nullptr == s) {

10             return false;

11         }

12         int i;

13 

14         int a[256];

15         memset(a, 0, 256 * sizeof(int));

16         for (i = 0; s[i]; ++i) {

17             if (a[s[i]]) {

18                 return false;

19             } else {

20                 a[s[i]] = 1;

21             }

22         }

23 

24         return true;

25     };

26 };

27 

28 int main()

29 {

30     Solution sol;

31     char s[100];

32     

33     while (scanf("%s", s) == 1) {

34         if (sol.isAllUnique(s)) {

35             printf("Unique.\n");

36         } else {

37             printf("Not unique.\n");

38         }

39     }

40 

41     return 0;

42 }

 

你可能感兴趣的:(interview)