首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

删除重复字符

本文链接:https://blog.csdn.net/weixin_42449444/article/details/86186192 题目描述: 牛牛有一个由小写字母组成字符串s,在s中可能有一些字母重复出现...但是牛牛不喜欢重复。对于同一个字母,他只想保留第一次出现并删除掉后面出现字母。请帮助牛牛完成对s操作。...输入描述: 输入包括一个字符串s,s长度length(1 ≤ length ≤ 1000),s中每个字符都是小写英文字母('a' - 'z') 输出描述: 输出一个字符串,表示满足牛牛要求字符串...输入样例: banana 输出样例: ban 解题思路: 保留第一次出现并删除后面出现字母,说白了就是每个字母只输出一次。无脑用for-each遍历字符串,map来记录每个字母出现次数。...//把这个字符记录为已输出 } } return 0; }

1.6K30
您找到你想要的搜索结果了吗?
是的
没有找到

重复字符最长子串(C语言

重复字符最长子串(C语言) 一、题目描述 给定一个字符串 s ,请你找出其中不含有重复字符 最长子串 长度。...示例 1: 输入: s = “abcabcbb” 输出: 3 解释: 因为无重复字符最长子串是 “abc”,所以其长度为 3。...示例 2: 输入: s = “bbbbb” 输出: 1 解释: 因为无重复字符最长子串是 “b”,所以其长度为 1。...二、解题思路 1、使用count记录无重复子串长度 2、start记录当前子串起始位置下标 3、max记录最大子串长度 4、使用index值记录当前字符字符串中位置坐标 5、遍历字符串...s 6、若字符串无重复字符,返回count,即当前字符串长度 7、若有重复字符,则改变子串起始位置start值为当前字符上一次出现位置下标 8、比较count与max值,记录最大子串长度。

34910

C语言每日一题(68)无重复字符最长字串

题目描述 给定一个字符串 s ,请你找出其中不含有重复字符 最长连续子字符长度。...示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符最长子字符串是 "abc",所以其长度为 3。...示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符最长子字符串是 "b",所以其长度为 1。...1.首先如何判断我们取得字串内有重复字符,利用哈希表,将每一个进窗口字符进入哈希表,每当新字符进入时就判断一下哈希表上对应值是否存在。...2.如果存在的话,此时就要出窗口,将left不断右移,每右移一个,就将对应字符哈希表减1,直到重复字符哈希表值为1即可。 3.此时更新结果。

7410

C语言每日一题(38)无重复字符最长字串

力扣 3 无重复字符最长字串 题目描述 给定一个字符串 s ,请你找出其中不含有重复字符 最长子串 长度。...示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符最长子串是 "b",所以其长度为 1。...(考虑窗口里每一个字符重复),我们可以用一个非常巧妙思路 这个思路利用了关于哈希算法以及字符ascii编码来进行。...随后开始遍历整个字符串,这里需要两层循环,利用每一个字符ascii编码当作数组下标,如果下标对应值为零,我们设置为1,并进入下面if语句运行,如果下一个字符和它相等,就不会进入接下来判断,这是判断不出现重复字符方法...关于求最长字串长度,我们利用两个下标,从第一个字符开始,如果接下来字符对应下标的数组为0就进入if语句,此时遍历两个下标的差值在加上原来第一个字符(也算不重复字串)便是不出现重复字符字串长度

12110

删除字符串中所有相邻重复

例子 输入: "abbaca" 输出: "ca" 解释: 例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作重复项。...之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复删除操作,所以最后字符串为 "ca"。...解题思路 栈方法 比较典型一道栈方法题目 可以通过栈 后进先出 思路进行求解 由于最后结果返回字符串, 那么我们用字符串代替栈数组进行求解 例如: s = "abbaca", result...= "", 循环s每一个字符判断 i 是否与result最后一个字符相等, 相等移除最后一个字符, 不相等result添加i 第一次循环: i = a, result = "a" 第二次循环:...i = b, result = "ab" 第三次循环: i = b, result = "a" 第四次循环: i = a, result = "" 第五次循环: i = c, result

4.8K55

C语言每日一题(21)删除排序数组中重复

力扣 26.删除排序数组中重复项 题目描述 给你一个 非严格递增排列 数组 nums ,请你 原地 删除重复出现元素,使每个元素 只出现一次 ,返回删除后数组新长度。...元素 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素个数。...考虑 nums 唯一元素数量为 k ,你需要做以下事情确保你题解可以被通过: 更改数组 nums ,使 nums 前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现顺序排列。...nums 其余元素与 nums 大小不重要。 返回 k 。...思路分析 基于双指针法,用下标进行代替,从数组最左端开始,遍历整个数组,下标1如果不等于下标2就把下标1指向值赋给下标2,同时继续向后遍历完整个数组,最后返回下标2值(即去重后数组长度) 整体步骤

11010

刷题第3篇:重复字符删除

题目描述 LeetCode----T1209 给你一个字符串 s,「k 倍重复删除操作」将会从 s 中选择 k 个相邻且相等字母,并删除它们,使被删去字符左侧和右侧连在一起。...你需要对 s 重复进行无限次这样删除操作,直到无法继续为止。在执行完所有删除操作后,返回最终得到字符串。本题答案保证唯一。 示例如下所示: ?...解题思路 当时看到这道题第一印象,觉得就是循环遍历,直到没有可以再次删除重复字符串为止。但是这样会出现一种浪费,每一次遍历只能删除当前字符串中连接在一起字符串。...比如,K=3,S=“aabbdddbcceeecf”,当我们第一次进行遍历时候,只能后删除“ddd”和“eee”,然后得到一个新字符串,再去删除字符串中剩下重复字符串。...于是我们可以从新容器中获取每个字符已经重复次数,当此字符重复次数等于k时候,则进行删除操作。

1.8K10

C语言删除无序整型数组中重复元素及时间复杂度

遇到一个题,大概要求是写一个函数处理来去掉一个无序整型数组(例如int i_arr[] = { 1, 2, 2, 3, 4, 2, 3, 5 };)中重复元素,并返回最终长度。...1 思路 看到这道题时候,第一反应就是需要删除元素,然后联想到单链表。但是后面一想还是不划算,因为单链表还得先把数组中元素遍历到链表节点中。...换一下思路,可以先创建另一个整型数组(大小和原数组一样),然后正向遍历数组中元素,比较当前元素和它前面所有的元素是否重复,如果这个整数之前没有出现过,那么就放到新数组中,于是有了小节2中Method1...;另外一种就是不需要创建新数组,在正向遍历数组中元素时,比较当前元素和它后面所有的元素是否重复,如果重复就把后面的所有元素向前移动(即覆盖),于是有了小节2中Method2。...2 完整程序 程序中第104行--j语句非常重要,这是为了避免当前元素连续出现3次(或以上)而没有被删除

7510

C语言每日一题(44)删除排序链表中重复元素 II

力扣 82 删除排序链表中重复元素 II 题目描述 给定一个已排序链表头 head , 删除原始链表中所有重复数字节点,只留下不同数字 。返回 已排序链表 。...,那如果有重复元素的话他一定是放在一起,也就是连续,所以我们从头结点和它下一个开始,如果相等的话,我们就将后面的链表向前移动进行覆盖实现删除,直到两个不等时继续遍历到链表结束。...为了方便扫描所有结点值,我们定义一个哨兵位,从哨兵位开始遍历,返回时指向哨兵位下一位就是头结点了。...while(cur->next&&cur->next->val==x)//如果cur下一个值等于刚刚保留x,就删,直到next值不等于x就停下...{ cur->next=cur->next->next;//进行删除,将nextnext赋给next实现覆盖删除 } }

11610

删除有序数组中重复C++

题目描述 给你一个 升序排列 数组 nums ,请你 原地 删除重复出现元素,使每个元素 只出现一次 ,返回删除后数组新长度。元素 相对顺序 应该保持 一致 。...由于在某些语言中不能改变数组长度,所以必须将结果放在数组nums第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 前 k 个元素应该保存最终结果。...将最终结果插入 nums 前 k 个位置后返回 k 。 不要使用额外空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间条件下完成。...temp.insert(it); nums.clear(); for(auto & it:temp)nums.push_back(it); return nums.size(); } }; 思路分析 删除重复项...我直接用set把所给数组元素存一遍,这样就没有重复项了,再把原数组清空,再遍历set集合把元素一一copy到原数组中,最后返回数组大小,完事zZZ。

21730

C语言字符函数

字符分类函数 C语言中有一系列函数是专门做字符分类,也就是一个字符是属于什么类型字符。这些函数使⽤都需要包含一个头文件是ctype.h。...2.4 将字符串中小写字母转大写 我们知道在C语言中‘A’(65)与‘a’(97)相差32,‘B’与‘b’也相差32,就是说大小写字母相差32。...在遍历字符串,就要知道字符长度,我们用strlen求字符串长度,而字符结束标志是\0,strlen统计是\0之前出现字符个数。...当我们知道字符长度,我们要将字符串中小写字母转大写代码实现: #include #include int main() { char str[] = "...字符转换函数 1.int tolower ( int c ); //将参数传进去大写字母转小写 2.int toupper ( int c ); //将参数传进去小写字母转大写 上面的代码,我们将小写转大写

9310

删除字符串中所有相邻重复

删除字符串中所有相邻重复项 官方题解链接: 删除字符串中所有相邻重复项 题目 给出由小写字母组成字符串 S,重复删除操作会选择两个相邻且相同字母,并删除它们。...在 S 上反复执行重复删除操作,直到无法继续删除。 在完成所有重复删除操作后返回最终字符串。答案保证唯一。...示例: 输入:"abbaca" 输出:"ca" 解释: 例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作重复项。...之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复删除操作,所以最后字符串为 "ca"。 提示: 1 <= S.length <= 20000 S 仅由小写英文字母组成。...删除字符串中所有相邻重复删除字符串中所有相邻重复

1.9K20
领券