1、执行结果:通过
2、显示详情:
3、题目:
给你一个仅由数字组成的字符串 s
,在最多交换一次 相邻 且具有相同 奇偶性 的数字后,返回可以得到的字典序最小的字符串。如果两个数字都是奇数或都是偶数,则它们具有相同的奇偶性。例如,5 和 9、2 和 4 奇偶性相同,而 6 和 9 奇偶性不同。
示例 1:
输入: s = "45320"
输出: "43520"
解释:
s[1] == '5'
和 s[2] == '3'
都具有相同的奇偶性,交换它们可以得到字典序最小的字符串。
示例 2:
输入: s = "001"
输出: "001"
解释:
无需进行交换,因为 s
已经是字典序最小的。
提示:
2 <= s.length <= 100
s
仅由数字组成。
4、思路:
这题较简单,只需要首个不同字符中较小那个的字符串字典序更小就行,交换的位置越靠左越好,所以找到奇偶相同的,且交换后数字更小的就行。找到结果就立即跳出循环。
代码如下:
char* getSmallestString(char* s) {
int a=strlen(s); //获取字符串长度
for(int i=0;i<a-1;i++){
int c=s[i]-'0'; //转换为数字
int d=s[i+1]-'0'; //转换为数字
if(c%2 == d%2){ //判断奇偶性
if(c*10+d > d*10+c){ //比较交换前后的大小
char b = s[i+1]; //交换
s[i+1]=s[i];
s[i]=b;
break;
}
}
}
return s;
}
标签:3216,数字,交换,奇偶性,char,字符串,一题,Leetcode,字典
From: https://blog.csdn.net/weixin_49189257/article/details/143365484