把图片中的代码copy下来:
public class Ex {
public static void main(String[] args) {
int[] arr = new int[]{8, 2, 1, 0, 3};
int[] index = new int[]{2, 0, 3, 2, 4, 0, 1, 3, 2, 3, 3};
String tel = "";
for (int i : index) {
tel += arr[i];
}
System.out.println("联系方式:" + tel);
}
}
运行结果如下:
题解:⽤int a[10]对号码每⼀位进⾏桶排序。逆序将a的下标存⼊不定⻓数组vector arr中,再遍历原号码⽣成index数组,最后输出。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
string s;
cin >> s;
int a[10] = {0};
for (int i = 0; i < 11; i++)
{
a[s[i] - '0']++;
}
vector<int> arr;
for (int i = 9; i >= 0; i--)
{
if (a[i] != 0)
{
arr.push_back(i);
}
}
vector<int> index;
for (int i = 0; i < 11; i++)
{
for (int j = 0; j < arr.size(); j++)
{
if ((s[i] - '0') == arr[j])
{
index.push_back(j);
}
}
}
cout << "int[] arr = new int[]{" << arr[0];
for (int i = 1; i < arr.size(); i++)
{
cout << "," << arr[i];
}
cout << "};" << endl << "int[] index = new int[]{" << index[0];
for (int i = 1; i < index.size(); i++)
{
cout << "," << index[i];
}
cout << "};";
return 0;
}