一、题目
二、解题思路
- 初始化数组,每个元素都是 0 ;
- 遍历手机号,将数字作为数组下标,并将对应的元素赋值为 1 ;
- 倒序遍历数组,如果数组值为 1 ,则表示手机号中有这个数字,则输出,并将数字转为字符添加到字符串;
- 遍历手机号,通过字符串的 find() 方法得到下标。
三、代码
#include<iostream>
using namespace std;
#include<string>
int main()
{
int a[15];
string tel,arr;
cin>>tel;
for(int i=0;i<10;i++)
{
a[i]=0;
}
for(int i=0;i<tel.length();i++)
{
a[int(tel[i])-'0']=1;
}
int cot=0;
cout<<"int[] arr = new int[]{";
for(int i=9;i>=0;i--)
{
if(a[i]==1)
{
if(cot)
{
cout<<',';
}
cout<<i;
cot++;
arr+=(char(i)+'0');
}
}
cout<<"};"<<endl;
cout<<"int[] index = new int[]{";
for(int i=0;i<tel.length();i++)
{
if(i)
{
cout<<',';
}
cout<<arr.find(tel[i]);
}
cout<<"};";
return 0;
}
四、总结
利用数组的下标以及字符串的 find() 方法。