外链推广网站,wordpress主题设置备份,网站栏目划分的原则,数据网站排名目录
前言
问题描述
代码解释 前言
若是想要了解基本语法的话#xff0c;请到(7条消息) C语言从练气期到渡劫期_要一杯卡布奇诺的博客-CSDN博客查看相应的语法细节
强烈安利这篇文章 —— (4条消息) 筑基五层 —— 位运算看这篇就行了_要一杯卡布奇诺的博客-CSDN博客 问题…目录
前言
问题描述
代码解释 前言
若是想要了解基本语法的话请到(7条消息) C语言从练气期到渡劫期_要一杯卡布奇诺的博客-CSDN博客查看相应的语法细节
强烈安利这篇文章 —— (4条消息) 筑基五层 —— 位运算看这篇就行了_要一杯卡布奇诺的博客-CSDN博客 问题描述 实现一个算法确定一个字符串 s 的所有字符是否全都不同。 题目来源面试题 01.01. 判定字符是否唯一 - 力扣Leetcode 代码解释 法一暴力枚举比较 思路分析直接循环遍历每个字符进行比较找到了返回false没有找到返回true bool isUnique(char* astr)
{for(int i0; istrlen(astr); i){for(int ji1; jstrlen(astr); j){//找到相同字符if(astr[i] astr[j])return false;}}//没有找到相同字符return true;
} 法二哈希表 思路分析把字符串中的值映射到哈希数组的下标中字符串的每个字符在哈希数组着中有对应的下标则该下标自增如果哈希中有大于1的值则说明字符串的字符不唯一 bool isUnique(char* astr)
{char hash[128] {0};//哈希数组memset(hash,0,sizeof(hash));//初始化//把字符的对应值映射到哈希数组中for(int i0; istrlen(astr); i)hash[astr[i]];for(int i0; i128; i){//判断有没有下标的值超过1的if(hash[i] 1)return false;} return true;
} 法三排序 思路分析进行排序排序后比较相邻的值如果有相同的值则说明字符串中的字符不唯一 bool isUnique(char* astr)
{//空指针判断if(astr NULL)return false;//空串判断 if(strlen(astr) 0)return true;//冒泡排序for(int i0; istrlen(astr)-1;i){int flag 1;//假设有序for(int j0; jstrlen(astr) - i - 1; j){if(astr[j] astr[j1]){flag 0;//无序char tmp astr[j];astr[j] astr[j1];astr[j1] tmp;}}//有序则跳出循环if(flag 1)break;}for(int i0; istrlen(astr)-1; i){//判断相邻字符if(astr[i] astr[i1])return false;}return true;
} 法四双指针 思路分析使用双指针进行对字符串遍历思路和暴力枚举的思路一样 bool isUnique(char* astr)
{ char* cur astr;assert(astr);//判断空指针//空串判断if (strlen(astr) 0)return true;while (*astr ! \0){cur;//指向astr的下一个if (*cur ! \0){char* tmp cur;while (*tmp ! \0){//比较if (*tmp *astr)return false;tmp;}}astr;}return true;} 恭喜你完成第二天的修仙之旅