思路:
我们将每个字符分别进行向前找相同字符和向后找相同字符,如果找到将num设为-1,判断num是否等于-1来判断是否跳出循环。
代码:
int FirstNotRepeatingChar(char* str) {
int num = 0;
for (int i = 0; i < strlen(str); i++)
{
if (num == -1)
{
num = i;
}
for (int j = 0; j < i; j++)
{
if (str[j] == str[i])
{
num = -1;
break;
}
}
if (num == -1&&i==strlen(str)-1)
{
break;
}
int n = i;
while (n < strlen(str))
{
if (str[n + 1] == str[i])
{
num = -1;
break;
}
n++;
}
if (num != -1)
{
return num;
}
}
return-1;
}
面试题 01.01. 判定字符是否唯一
面试题 01.01. 判定字符是否唯一https://leetcode.cn/problems/is-unique-lcci/
题目描述:
实现一个算法,确定一个字符串 s
的所有字符是否全都不同。
示例:
思路:
还是向前和向后判断是否有相同的字符,如果有直接返回false。
注意几种极端情况:
1.字符只有一个的时候,直接判断,
2.当下标遍历走到字符串长度-1的位置注意越界的情况。
代码:
bool isUnique(char* astr) {
int cur = 0;
int flag = 0;
if (strlen(astr) == 1)//避免astr的长度为1的特殊情况
return true;
while (cur < strlen(astr))
{
for (int i = 0; i < cur; i++)//向前判断相等
{
if (astr[i] == astr[cur])
{
flag = 1;
break;
}
}
![img](https://img-blog.csdnimg.cn/img_convert/649c4ad90a762bc464850b9fa358ac1e.png)
![img](https://img-blog.csdnimg.cn/img_convert/bb770999a5633eb592155a1ec0f28ba8.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**