思路:
首先用set来记录电话号码中出现的数字,并用arr数组存储起来。接着遍历电话号码中的各个数字,在arr中找到各个数字所在的位置。再按照对应的格式进行输出
这里还有道相似的题目,并附有set的详细介绍和使用!
https://blog.csdn.net/weixin_43535668/article/details/104381291
#include<iostream>
#include<set>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
char a[11];//电话号码
set<char> s;//记录电话号码出现的数字
for (int i = 0; i < 11; i++)
{
cin >> a[i];
s.insert(a[i]);
}
int num = s.size();//记录相异的数字个数
int arr[10];
int index[11];
int i =num-1;//下标记录
set<char>::iterator it;
for (it=s.begin();it!=s.end();it++)//set的迭代器遍历
{
arr[i] = *it - '0';
i--;
}
for (int i = 0; i < 11; i++)
{
for (int j = 0; j < num; j++)
{
if ((a[i] - '0') == arr[j])//找电话号码每个数字在index中的位置
{
index[i] = j;
break;
}
}
}
//下面为输出格式设置
cout << "int[] arr = new int[]{";
for (int i = 0; i < num; i++)
{
cout << arr[i];
if (i != num - 1)
{
cout << ",";
}
}
cout << "};" << endl;
cout << "int[] index = new int[]{";
for (int i = 0; i < 11; i++)
{
cout << index[i];
if (i != 10)
{
cout << ",";
}
}
cout << "};";
system("pause");
return 0;
}