• 计算包含特殊字符的字符串的字符个数


    额...今天面试的一道题,竟然没做出来,真是丢人,虽然简单,但是现在记录下来以示警戒:

    给一个字符串,例如“d|f|d|s|f|s|a|d|d|d|a|f|d|g|d|f|”,要求输出的结果是

    “d的数量是:7个!

    f的数量是:4个!

    s的数量是:2个!

    a的数量是:2个!

    g的数量是:1个!”

    界面:很简单的

    下面是代码:

    首先是去掉重复字符串:

    网上借鉴的一种方法是:

    View Code
    public List<string> getList(string str)
            {
                List<string> list = new List<string>();
                char[] sep = { ' ', '|', '#', '*', ',', ':', ';' };
                int start = 0;
                int end = 0;
                while (start<str.Length)
                {
                    end = str.IndexOfAny(sep, start);
                    if (end == -1)
                    {
                        for (int i = 0; i < str.Length; i++)
                        {
                            list.Add(str[i].ToString());
                        }
                        break;
                    }
                    if (end!=start)
                    {
                        list.Add(str.Substring(start, (end - start)));
                    }
                    start = end + 1;
                }
                return list;
            }

    这种方法没太看懂,于是有了第二种方法:

    View Code
     public string getString(string str)
            {
                char[] sep = { ' ', '|', '#', '*', ',', ':', ';' };
                char[] chars = str.ToCharArray();
                StringBuilder sb = new StringBuilder();
                foreach (var item in chars)
                {
                    if (!sep.Contains(item))
                    {
                        sb.Append(item);
                    }
                }
                return sb.ToString();
            }

    这种方法相对简单,对我来说比较容易理解。

    整个代码实现是:

    View Code
    //去掉重复字符
            public string getDistinctString(string str)
            {
                StringBuilder sb = new StringBuilder();
                List<string> list = new List<string>();
                char[] chars = str.ToCharArray();
                foreach (var item in chars)
                {
                    if (!list.Contains(item.ToString()))
                    {
                        list.Add(item.ToString());
                        sb.Append(item);
                    }
                }
    
                return sb.ToString();
            }
    
    private void button1_Click(object sender, EventArgs e)
            {
                char[] chars = getDistinctString(getString(textBox1.Text)).ToCharArray();
                char[] list = getString(textBox1.Text).ToCharArray();
                string result="";
                foreach (var item in chars)
                {
                    int count = 0;
                    foreach (var i in list)
                    {
                        if (item==i)
                        {
                            count++;
                        }
                    }
                    result = result + item + "的数量是:" + count + "个!" + " ";
                }
                textBox2.Text = result;
            }
  • 相关阅读:
    java返回json数据日期为一串数字字符串 js 转义
    ==和equals以及hashcode
    【线程分析】
    【dubbo&zookeeper】
    线程安全实现方案
    IOC原理
    java锁
    java特殊运算符
    HashMap原理和TreeMap原理
    volatile与synchronized
  • 原文地址:https://www.cnblogs.com/rumeng/p/3007588.html
Copyright © 2020-2023  润新知