原文:

给定一个由 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)