加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 为重复字符打印星号的算法

发布时间:2020-12-16 10:09:42 所属栏目:百科 来源:网络整理
导读:我在接受采访时被问到这个问题: 给定带有输入字符串的数组,显示输出,如下所示 输入 INDIA 产量 INDA **** * 我遍历数组并将每个字符存储为std :: map中的键,其值为出现次数.稍后我迭代地图并打印星号并减少每个角色的地图值. 最初,我被要求不使用任何库.我
我在接受采访时被问到这个问题:
给定带有输入字符串的数组,显示输出,如下所示

输入

INDIA

产量

INDA  
****  
*

我遍历数组并将每个字符存储为std :: map中的键,其值为出现次数.稍后我迭代地图并打印星号并减少每个角色的地图值.

最初,我被要求不使用任何库.我给出了一个需要大量迭代的解决方案.对于每个字符,迭代完整数组直到索引以查找先前出现的事件,依此类推.
有没有更好的方法,例如更好的复杂性,例如更快的操作,可以实现这一点?

解决方法

这是另一个:
你可以看到它工作 HERE

#include <stdio.h>
int main()
{
    int i,j=0,f=1;
    char input[50]={'I','N','D','I','A','N'};
    char letters[256]={0};
    int counter[256]={0};
    for(i=0;i<50;i++)
    {
        if(input[i])
         counter[input[i]]++;
         if(counter[input[i]]==1)
         {
            putchar(input[i]);
            letters[j]=input[i];
            j++;
         }    
    }
    putchar('n');
    while(f)
    {
        f=0;      
        for(i=0;i<j;i++)
            if(counter[letters[i]])
            {
                putchar('*');
                counter[letters[i]]--;
                f=1;
            }
            else
            {
                putchar(' ');
            }
        putchar('n');  
    }
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读