一个字符串里有一个字符出现次数超过1/2,求出该字符的O(n)时间,O(1)空间的算法(2008-06-30 09:58)

来源:互联网 发布:淘宝好的服装店 编辑:程序博客网 时间:2024/05/22 19:53
MXX师兄里插播的一个问题...
实在是想不到, 上CSDN问了下, tailzhou 给了一个代码.
我就不描述了...直接上代码.

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     char str[]="asdssfas efsdsdss";
  5.     int j=1;
  6.     int n=sizeof(str)/sizeof(char);
  7.     int idx=0;
  8.     int count=1;
  9.     while(j <n-1)
  10.     {
  11.         if (str[idx]!=str[j]) count--;
  12.         else count++;
  13.         if (count==0)
  14.         {
  15.             idx=j+1;
  16.             j++;
  17.             count=1;
  18.         }
  19.         j++ ;
  20.     }
  21.     printf("%c",str[idx]);