49 字符大小写排序
Posted 唐的糖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了49 字符大小写排序相关的知识,希望对你有一定的参考价值。
原题网址:https://www.lintcode.com/problem/sort-letters-by-case/description
描述
给定一个只包含字母的字符串,按照先小写字母后大写字母的顺序进行排序。
小写字母或者大写字母他们之间不一定要保持在原始字符串中的相对位置。
您在真实的面试中是否遇到过这个题?
样例
给出"abAcD",一个可能的答案为"acbAD"
挑战
在原地扫描一遍完成
标签
排序
两根指针
字符串处理
LintCode 版权所有
思路:
参照插入排序法,设置两根指针i、j,一个指向左侧调整好的小写字母区末位的下一个位置,另一个指向待处理区域的第一个元素。
如果待处理元素为小写字母,将其放到 i 处,i 处元素放到 j 处,i 向右移动一位,j 向右移动一位。
如果待处理元素不为小写字母,i 不动,j 向右移动一位。
AC代码:
class Solution { public: /* * @param chars: The letter array you should sort by Case * @return: nothing */ void sortLetters(string &chars) { // write your code here int n=chars.size(); int i=0;//小写字母区末位的下一个位置; for (int j=0;j<n;j++) { if (chars[j]>=‘a‘&&chars[j]<=‘z‘) { swap(chars[i],chars[j]); i++; } } } };
以上是关于49 字符大小写排序的主要内容,如果未能解决你的问题,请参考以下文章
2021-12-24:划分字母区间。 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。 力扣763。某大厂面试