- 题目描述:
- 题目链接:
-视频讲解链接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 };