您的位置:首页 > 职场人生

面试算法题

2017-05-04 16:15 113 查看
1.字符串压缩

不考虑字符数超过9。

#include <string>
#include <iostream>

std::string solution(std::string s) {
std::string ans;
int i = 0, j = 0;
while (i < int(s.length())) {
while (s[i] == s[j]) ++i;
ans += s[j];
ans += std::to_string(i - j);
j = i;
}
return ans;
}
int main() {
// 输入
std::string s;
std::cin >> s;
// 字符串压缩
std::string ans = solution(s);
// 输出
std::cout << ans;
}

考虑字符数超过9。

#include <string>
#include <iostream>

std::string solution(std::string s) {
std::string ans;
int i = 0, j = 0;
while (i < int(s.length())) {
while (s[i] == s[j]) ++i;
ans += s[j];
int count = i-j;
while (count / 10) {
ans += std::to_string(9);
ans += s[j];
count -= 9;
}
ans += std::to_string(count);
j = i;
}
return ans;
}
int main() {
// 输入
std::string s;
std::cin >> s;
// 字符串压缩
std::string ans = solution(s);
// 输出
std::cout << ans;
}


const scanf = require('scanf');

let input = scanf('%s');
function solution(s) {
  let ans = [];
  let i = 0, j = 0;
  while (i < s.length) {
    while (s[i] === s[j]) ++i;
    ans += s[j];
    let count = i - j;
    while (parseInt(count / 10, 10)) {
      ans += 9;
      ans += s[j];
      count -= 9;
    }
    ans += count;
    j = i;
  }
  return ans;
}

let ans = solution(input);
console.log(ans);


2.字符串解压
std::string extract_string(std::string s) {
std::string ans;
for (int i = 0; i < int(s.length()); i+=2) {
int count = int(s[i+1])-int('0');
for (int j = 0; j < count; ++j) ans += s[i];
}
return ans;
}
int main() {
// 输入
std::string s;
std::cin >> s;
// 字符串解压
std::string ans = extract_string(s);
// 输出
std::cout << ans;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: