原文:
给定一个由 n 个整数组成的 arr[] ,任务是打印该数字的所有唯一数字,这些数字是在排除前导零后,按照出现的顺序串联所有数组元素而形成的。
示例:
输入: arr[] = {122,474,612,932} 输出: 7 6 9 3 解释: 数组元素串联形成的数为“ 122474612932 ”。 数字中出现的唯一数字是 7 6 9 3 (按照出现的顺序)。
输入: arr[]={0,912,231,14} 输出: 9 3 4 解释: 数组元素串联形成的数为“091223114”。 去除前导 0 后得到的最终编号为“91223114”。 数字中出现的唯一数字是 9 3 4 (按出现的顺序)。
方法:想法是并连接这些字符串,然后使用来查找所获得的数字中存在的唯一数字。
按照以下步骤解决问题。
- 遍历数组arr[],并将所有字符串串联在一个变量中,比如 s 。
- 使用将字符串 s 转换为等效整数(比如 n )(去掉前导 0)
- 初始化一个大小为 10 的,存储数字【0,9】的频率。
- 初始化一个空列表,说列出
- 现在,对于数字 n 的每个数字,增加中该索引的计数。
- 对于数字 n 的每个数字,执行以下操作:
- 检查是否是 拜访了
- 如果号码是,如果其频率是 1、,则将该数字追加到 列表 中。将该指标的值设为 已访问。
- 列出并打印
下面是上述方法的实现:
c
// c program for the above approach
#include
using namespace std;
// function to print long unique elements
void printunique(vector lis)
{
// reverse the list
reverse(lis.begin(),lis.end());
// traverse the list
for(long long i:lis)
cout << i << " ";
}
// function which check for
// all unique digits
void checkunique(string st)
{
// stores the final number
vector lis;
// stores the count of
// unique digits
long long res = 0;
// converting string to long longer
// to remove leading zeros
long long n = stoll(st);
// stores count of digits
vector cnt(10, 0), cnt1(10, 0);
// iterate over the digits of n
while (n > 0)
{
// retrieve the last digit of n
long long rem = n % 10;
// increase the count
// of the last digit
cnt[rem] = 1;
// remove the last digit of n
n = n /10;
}
// converting string to long longer again
n = stoll(st);
// iterate over the digits of n
while (n > 0)
{
// retrieve the last digit of n
long long rem = n % 10;
// if the value of this digit
// is not visited
if(cnt1[rem] == 0)
{
// if its frequency is 1 (unique)
if(cnt[rem] == 1)
lis.push_back(rem);
}
// mark the digit visited
cnt1[rem] = 1;
// remove the last digit of n
n = n /10;
}
// passing this list to print long
// the reversed list
printunique(lis);
}
// function to concatenate array elements
void combinearray(vector lis)
{
// stores the concatenated number
string st = "";
// traverse the array
for (long long el : lis)
{
// convert to equivalent string
string ee = to_string(el);
// concatenate the string
st = st ee;
}
// passing string to checkunique function
checkunique(st);
}
// driver code
int main()
{
vector arr = {122, 474, 612, 932};
// function call to prlong long unique
// digits present in the
// concatenation of array elements
combinearray(arr);
return 0;
}
// this code is contributed by mohit kumar 29.
python 3
# python implementation
# of above approach
# function to print unique elements
def printunique(lis):
# reverse the list
lis.reverse()
# traverse the list
for i in lis:
print(i, end =" ")
# function which check for
# all unique digits
def checkunique(string):
# stores the final number
lis = []
# stores the count of
# unique digits
res = 0
# converting string to integer
# to remove leading zeros
n = int(string)
# stores count of digits
cnt = [0] * 10
# iterate over the digits of n
while (n > 0):
# retrieve the last digit of n
rem = n % 10
# increase the count
# of the last digit
cnt[rem] = 1
# remove the last digit of n
n = n // 10
# converting string to integer again
n = int(string)
# iterate over the digits of n
while (n > 0):
# retrieve the last digit of n
rem = n % 10
# if the value of this digit
# is not visited
if(cnt[rem] != 'visited'):
# if its frequency is 1 (unique)
if(cnt[rem] == 1):
lis.append(rem)
# mark the digit visited
cnt[rem] = 'visited'
# remove the last digit of n
n = n // 10
# passing this list to print
# the reversed list
printunique(lis)
# function to concatenate array elements
def combinearray(lis):
# stores the concatenated number
string = ""
# traverse the array
for el in lis:
# convert to equivalent string
el = str(el)
# concatenate the string
string = string el
# passing string to checkunique function
checkunique(string)
# driver code
# input
arr = [122, 474, 612, 932]
# function call to print unique
# digits present in the
# concatenation of array elements
combinearray(arr)
java 描述语言
output:
7 6 9 3
时间复杂度 : o(n) 辅助空间: o(n)
麻将胡了pg电子网站的版权属于:月萌api www.moonapi.com,转载请注明出处