首页 > 其他分享 >Leetcode每日一题C之3216. 交换后字典序最小的字符串

Leetcode每日一题C之3216. 交换后字典序最小的字符串

时间:2024-10-30 23:16:03浏览次数:3  
标签:3216 数字 交换 奇偶性 char 字符串 一题 Leetcode 字典

 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

相关文章

  • LeetCode Hot 100:多维动态规划
    LeetCodeHot100:多维动态规划62.不同路径思路1:动态规划classSolution{public:intuniquePaths(intm,intn){if(m==1||n==1)return1; //dp[i][j]:到达(i,j)的不同路径数vector<vector<int>>dp(m+1,vec......
  • LeetCode Hot 100:技巧
    LeetCodeHot100:技巧136.只出现一次的数字思路1:哈希表classSolution{public:intsingleNumber(vector<int>&nums){unordered_map<int,int>hashMap;for(int&num:nums)hashMap[num]++;for(auto&[x,......
  • 代码随想录算法训练营第六天| leetcode242.有效的字母异位词、leetcode349.两个数组的
    1.leetcode242.有效的字母异位词题目链接:242.有效的字母异位词-力扣(LeetCode)文章链接:代码随想录视频链接:学透哈希表,数组使用有技巧!Leetcode:242.有效的字母异位词哔哩哔哩bilibili自己的思路:首先就是对字符串进行分开成一个一个单独的字母,然后使用列表存储这些数据,再对......
  • 【LeetCode】两数之和、大数相加
    主页:HABUO......
  • leetcode155. 最小栈
    设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。voidpush(intval) 将元素val推入堆栈。voidpop() 删除堆栈顶部的元素。inttop() 获取堆栈顶部的元素。intgetMin() 获取堆栈中的最小元素......
  • 3216. 交换后字典序最小的字符串
    给你一个仅由数字组成的字符串s,在最多交换一次相邻且具有相同奇偶性的数字后,返回可以得到的字典序最小的字符串。如果两个数字都是奇数或都是偶数,则它们具有相同的奇偶性。例如,5和9、2和4奇偶性相同,而6和9奇偶性不同。示例1:输入:s="45320"输出:"43520"解......
  • Leetcode 3216. 交换后字典序最小的字符串
    因为字符串长度只有100,所以直接模拟就行了。字符串比较不想写的话,可以用C的strcmp1classSolution{2public:3stringswap(string&s,inti,intj){4stringres="";5for(intk=0;k<i;k++)6res+=s[k];7res+=s[j];......
  • [LeetCode] 3216. Lexicographically Smallest String After a Swap
    Givenastringscontainingonlydigits,returnthelexicographicallysmalleststringthatcanbeobtainedafterswappingadjacentdigitsinswiththesameparityatmostonce.Digitshavethesameparityifbothareoddorbothareeven.Forexample,5......
  • 0x02 Leetcode Hot100 哈希
    前置知识掌握每种语言的基本数据类型及其时间复杂度。Python:list、tuple、set、dictC++:STL中的vector、set、mapJava:集合类中的List、Set、Map为什么是哈希?在不同语言中,对于字典(dict)类的数据都会先将其键(key)进行哈希(Hash)运算,这个Hash值决定了键值对在内存中的存储位置,因此......
  • Leetcode73. 矩阵置零
    问题描述:给定一个 mxn的矩阵,如果一个元素为0,则将其所在行和列的所有元素都设为0。请使用原地算法。示例1:输入:matrix=[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例2:输入:matrix=[[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,......