一些小小的编程技巧(慢慢添加)

来源:互联网 发布:海岛奇兵火炮升级数据 编辑:程序博客网 时间:2024/05/30 04:44

一、存储表示:

1、Ascii码256个字符,可用char a[256]存储; 大写/小写英文字符,可 char a[26]存储; 

若要标识一个字符串S中,某些字符是否出现过,则一个字符可用一个bit位标识即可,这样256个字符,用int (32位),  256/32 = 8,则一共 int a[8]即可表示。

这样涉及到位操作等。

二、字符串相关:

1、兄弟字符串、 旋转变形字符串(属于兄弟字符串的一种)的判断:

兄弟字符串: 

1)S1、S2各自排序, 再比较S1和S2,若相等则为兄弟;

2)a、申请一个数组c,数组中一个位置表示一个字符,数组的值为对应字符出现的次数count;

      b、初始化数组c全为0;

      c、遍历S1,对字符对应的数组中的count值+1;

      d、遍历S2:

如果:字符对应数组中的值为0(证明S1没出现这个字符), 判定S1和S2不是兄弟字符串;

否则:对字符对应的数组中的count值-1;

      e、遍历c数组,若S1和S2为兄弟,此时c数组的值应该全为0;

旋转变形字符串: 

1)S1+S1 组成新串S, 若S包含 S2, 则S1和S2为互相旋转变形的字符串;

2)同兄弟字符串的2)的方法一样。


原创粉丝点击