在编写算法之前,要先确认是ascii字符串还是unicode字符串
Ascii码表最多就256个字符:以一个字节来存放一个 ASCII 字符 1byte = 8bit ,故最多能存放2^8 = 256个字符
标准ASCII码:是 7 位编码,多余出来的一位(最高位)在计算机内部通常保持为 0 (在数据传输时可用作奇偶校验位)。共128个字符
0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符)
32~126(共95个)是字符(32是空格),
其中48~57为0到9十个阿拉伯数字
65~90为26个大写英文字母,
97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
扩展 ASCII 码: 使用8位编码,共256个字符
思路:
1. 不相同的ascii字符最多有256个,故设置bool型数组char_set,包含256个元素,初始为false
2. 依次获取字符串中的字符 转为int值,将该int值作为bool型数组的下标,查看是否为true,if ( char_set[i] )
若是 则表示已有相同的值 即相同字符,return false;
若否 则将对应的值设为true即char_set[i] = true;
代码实现如下:
bool isUniqueChars(string str)
{
//ascii码表总共就256个字符,如果长度大于256就直接回false
if (str.length() > 256) return false;
//一个个字符取过去,每取一个就比较一次,若之前没有过,则将该位值置为true.
bool[] char_Set = new bool[256]; //默认为false
for (int i = 0; i < str.length; i++)
{
int val = str[i]; //获取某个字符,赋值给int类型强转为int值
if (char_Set[val])
{
return false;
}
char_Set[val] = true; //表示未得到相同值的字符,将数组value设为true
}
}