一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 366|回复: 0
收起左侧

[CareerCup] CTCI Question1.5问题

[复制链接] |试试Instant~ |关注本帖
handsomelady 发表于 2014-10-22 12:04:06 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
用C++在刷ctci,第一章第五题有些疑问。书里答案是java的,而且不用string buffer的方法没有check compressed后的string长度是否更短,用了string buffer的方法,我不明白为什么check长度的过程那么复杂,不知道是不是我理解题意有误。

如下是我的code,麻烦大家帮忙挑下错~~谢啦!:)

// CC1.5.cpp : Implement a method to perform basic string compression using the counts of repeated characters. For example, the string aabcccaaa would become a2b1c3a3. If the "compressed" string would not become smaller than the original string, return the original string.
//

#include "stdafx.h"
#include<string>
#include<iostream>
using namespace std;

// assume all the repeated chars are sorted together
string CompressRepeat(string s){
        if (s=="") return s;
        int len=s.length();
        string mystr="";
        char c=s[0];
        int count=1;
        for(int i=1;i<len;i++)
                if (s[i]==c) count++;
                else {
                        mystr += c+ to_string(count);
                        c=s[i];
                        count=1;
                }        
        mystr = mystr+c+to_string(count);
        int len1 = mystr.length();
        if (len1 >= len) return s;
        else return mystr;
}

void main(){
        string s1="aabbbbbcccd";
        string s2="abcd";
        string s3=NULL;
        cout<<s1<<" after compressing "<<CompressRepeat(s1)<<endl;
        cout<<s2<<" after compressing "<<CompressRepeat(s2)<<endl;
        cout<<s3<<" after compressing "<<CompressRepeat(s3)<<endl;
        system("pause");
}

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-6 21:03

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表