问题描述:
对于一个数字n,进行一次操作,交换其相邻的两位,经过交换后得到的最大的数为zzj数
输入
给定一个数字n
数据范围: 10<=n<=1e8
输出
输出其zzj数
样例输入
19260817
样例输出
91260817
#include<iostream>
#include<string>
using namespace std;
void swap(char& c1, char& c2) {
char c = c1;
c1 = c2;
c2 = c;
}
int main() {
string s,tmpString;
cin >> s;
int max = atoi(s.c_str());
int len = s.length();
int tmp=0;
for (int i = 0; i < len - 1; i++) {
tmpString = s;
swap(tmpString[i], tmpString[i + 1]);
tmp = atoi(tmpString.c_str());
if (tmp > max) {
max = tmp;
}
swap(tmpString[i], tmpString[i + 1]);
}
cout << max << endl;
}
public static void main(String[] args) {
int a = 19260817;
String str = a+"";
int len = str.length();
char[] chars = str.toCharArray();
int max = a;
for (int i=1;i<len;i++){
change(chars,i,i-1);
int integer = new Integer(new String(chars));
if(integer> max){
max = integer;
}
change(chars,i,i-1);
}
System.out.println(max);
}
public static void change(char[] chars ,int i,int j){
char ch ;
ch = chars[i];
chars[i] = chars[j];
chars[j] = ch;
}