zoukankan      html  css  js  c++  java
  • 443. String Compression

    原题:

    443. String Compression

    解题:

    看到题目就想到用map计数,然后将计数的位数计算处理,这里的解法并不满足题目的额外O(1)的要求,并且只是返回了结果array的长度,并未修改原始vector的元素。

    代码如下:

    class Solution {
    public:
    	int bitsOfNumber(int n)
    	{
    		int cnt = 0;
    		if (n <= 1) return 0; //若为1,则不增加
    		while(n) //统计位数,如12就是2位
    		{
    			cnt++;
    			n /=10;
    		}
    		return cnt;
    	}
    	int compress(vector<char>& chars) 
    	{
    		int size = chars.size();
    		int i = 0;
    		int sum = 0;
    		map <char, int> mapchar;
    		map <char, int>::iterator it;
    		for(;i < size;i++)
    		{
    			mapchar[chars[i]]++; //统计各个字符个数
    		}
    		it = mapchar.begin();
    		while(it != mapchar.end())
    		{
    			if(it->second != 0) //如果有这个字符
    			{
    				sum += bitsOfNumber(it->second) + 1; //字符本身也占据一个元素位置,所以要加1
    			}
    			it++;
    		}
    		return sum;
    	}
    };
    

      AC代码如下:

    class Solution {
    public:
        int compress(vector<char>& chars) {
            int len = chars.size() ;
            if (len < 2)
                return len ;
            int res = 0 ;
            char c = chars[0] ;
            int num = 1 ;
            chars.push_back(' ') ;
            for(int i = 1 ; i < len+1 ; i++){
                if (chars[i] == chars[i-1])
                    num++ ;
                if (chars[i] != chars[i-1] ){
                    chars[res++] = c ;
                    if (num > 1){
                        string s = to_string(num) ;
                        for(int j = 0 ; j < s.size() ; j++){
                            chars[res++] = s[j] ;
                        }
                    }
                    num = 1 ;
                    c = chars[i] ;
                }
            }   
            return res ;
        }
    };
    

      

  • 相关阅读:
    省选知识点
    寒假练习
    水题欢乐赛-套路
    2019年12月(2)
    洛谷P1347 排序
    Aizu
    2019年12月(1)
    【CSP2019】
    联系博主
    UVA1420 Priest John's Busiest Day【贪心】
  • 原文地址:https://www.cnblogs.com/xqn2017/p/8551156.html
Copyright © 2011-2022 走看看