Leetcode题解:5315. 6和9组成的最大数字

题目描述

给你一个仅由数字 6 和 9 组成的正整数 num。

你最多只能翻转一位数字,将 6 变成 9,或者把 9 变成 6 。

请返回你可以得到的最大数字。

解题思路

思路一:利用区间夹出第一个不为6的数字,加上3*10^n;
思路二:转化为字符串/字符数组找到第一个不为‘6’的字符,将其转化为‘9’,再转化回数字
思路三:枚举(太暴力了,此处就不列代码)

代码一

class Solution {
public:
    int maximum69Number (int num) {
       int result = num;
       if(num > 9000){
           num -=9000;
       } 
       else if(num > 1000){
           result+=3000;
           return result;
       }
       if(num > 900){
           num -=900;
       } 
       else if(num > 100){
           result+=300;
           return result;
       }
       if(num > 90){
           num -=90;
       } 
       else if(num > 10){
           result+=30;
           return result;
       }
       if(num == 6){
           result+=3;
       }
        return result;
    }
};

代码二

class Solution {
public:
    int maximum69Number (int num) {
       string result = to_string(num);
       for(size_t i = 0;i < result.length();i++){  //注意此处是size_t
           if(result.at(i)=='6'){
               result.at(i) = '9';
               break;
           }
       }
       return stoi(result);
    };
};

反思与收获

温习了C++中string如何与int形式进行转化。
string s转化为int i
(1)i = atoi.(s.c_str);
注:atoi(const char*)需要使用c_str将s转化为const char *形式的
(2)i = stoi(s);
int i 转化为string s
(1)i = to_string(i);
此外,string的length()与size()函数返回值均为size_t,无法与int直接比较,因为这个还报错了好几回…

你可能感兴趣的:(Leetcode题解:5315. 6和9组成的最大数字)