- 题目描述:
图片说明
- 题目链接:

https://www.nowcoder.com/practice/01e7bedf5dd2421aa6f879fd8055e51d?tpId=196&&tqId=37221&rp=1&ru=/activity/oj&qru=/ta/job-code-total/question-ranking
- 设计思想:
图片说明

-视频讲解链接B站视频讲解
- 复杂度分析:
图片说明
- 代码:
c++版本:

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param number string字符串 
     * @return string字符串
     */
    string change(string number) {
        // write code here
        int l = 0,r = number.size() - 1;//l是左指针,r是右指针
        while(l < r){//如果l < r,就进行如下操作
            while(l < r && (number[l] - '0') % 2 == 1){
                l ++;
            }
            while(l < r && (number[r] - '0') % 2 == 1 ){
                r --;
            }
            if(l < r)swap(number[l],number[r]);
            l ++;
            r --; 
        }
        return number;
    }
};

Java版本:

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param number string字符串 
     * @return string字符串
     */
    public String change (String number) {
        // write code here
        char []str = number.toCharArray();
        //l是左指针,r是右指针
        int l = 0;
        int r = str.length - 1;
        while(l < r){//如果l < r,就进行如下操作
            while(l < r && (str[l] - '0') % 2 == 1){
                l ++;
            }
            while(l < r && (str[r] - '0') % 2 == 1 ){
                r --;
            }
            if(l < r){
                char temp = str[l];
                str[l] = str[r];
                str[r] = temp;
            }
            l ++;
            r --;
        }
        return new String(str);
    }
}

Python版本:

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param number string字符串 
# @return string字符串
#
class Solution:
    def change(self , number ):
        # write code here
        arr =  list(number)
        l,r = 0,len(number)-1#l是左指针,r是右指针
        while l < r:#如果l < r,就进行如下操作
            while l < r and int(arr[l])%2 == 1:
                l +=1
            while l < r and int(arr[r])%2 == 1:
                r -=1
            if l < r :
                arr[l],arr[r] = arr[r],arr[l]
            l += 1
            r -= 1
        return ''.join(arr)

JavaScript版本:

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param number string字符串 
 * @return string字符串
 */
function change( number ) {
    // write code here
        let str = number.split('');
        //l是左指针,r是右指针
        let l = 0;
        let r = str.length - 1;
        while(l < r){//如果l < r,就进行如下操作
            while(l < r && parseInt(str[l])% 2 == 1){
                l ++;
            }
            while(l < r && parseInt(str[r]) % 2 == 1 ){
                r --;
            }
            if(l < r)[str[l],str[r]]=[str[r],str[l]];
            l ++;
            r --;
        }
        return str.join("");
}
module.exports = {
    change : change
};