现有字符串char[] text,实现函数char[] drawChar(char[] text),找出text中重复出现最多的字符,然后将该字符移到text的最前端,生成一个新的字符串。 假设重复出现最多的字符只有一个。请充分考虑内存和性能效率。 举例: “abcaba”,转换后成为“aaabcb”。
现有字符串char[] text,实现函数char[] drawChar(char[] text),找出text中重复出现最多的字符,然后将该字符移到text的最前端,生成一个新的字符串。 假设重复出现最多的字符只有一个。请充分考虑内存和性能效率。 举例: “abcaba”,转换后成为“aaabcb”。
输入原始的字符串,如 "abcaba"
输入处理后的字符串,如 "aaabcb"
abcaba
aaabcb
| #include <iostream> usingnamespacestd; int main(){ inthash[256] = {0}; string str; cin >> str; charc; intmax = 0; for(inti = 0; i < str.size(); ++i){ ++hash[str[i] - 'a']; if(hash[str[i] - 'a'] > max){ max = hash[str[i] - 'a']; c = str[i]; } } inti = str.size(); intj = str.size() - 1; while(j >= 0){ if(str[j] != c){ swap(str[--i], str[j--]); }else{ --j; } } cout << str << endl; return0; } |
import java.util.*;
public class Main {
// 修改字符串
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
map.put(c, map.getOrDefault(c, 0)+1);
}
int max = 0;
char target = ' ';
for (char key : map.keySet()) {
if (map.get(key) > max) {
max = map.get(key);
target = key;
}
}
s = s.replaceAll(target+"", "");
for (int i = 0; i < max; i++) {
System.out.print(target);
}
System.out.println(s);
}
}
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char ch[] = sc.nextLine().toCharArray();
System.out.println(drawChar(ch));
}
public static char[] drawChar(char[] text) {
Map<Character, Integer> map = new HashMap();
for (int i = 0; i < text.length; i++) {
if (!map.containsKey(text[i])) {
map.put(text[i], 1);
} else {
int val = map.get(text[i]);
map.put(text[i], ++val);
}
}
int max = 0;
char ch = '0';
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
if (entry.getValue() > max) {
max = entry.getValue();
ch = entry.getKey();
}
}
StringBuffer sb_head = new StringBuffer(), sb_foot = new StringBuffer();
for (int i = 0; i < text.length; i++) {
if (text[i] == ch) {
sb_head.append(text[i]);
} else {
sb_foot.append(text[i]);
}
}
sb_head.append(sb_foot);
return sb_head.toString().toCharArray();
}
}
#include <iostream>
#include <string>
#include <unordered_map>
#include <algorithm>
using namespace std;
inline void getResult(string& str) {
auto len = str.size();
unordered_map<char,int> m;
auto max = 0;
char byte = 0;
for(size_t i = 0; i < len; ++i) {
auto count = m[str[i]]++;
if(count > max) {
max = count;
byte = str[i];
}
}
str.erase(std::remove(str.begin(),str.end(),byte),str.end());
std::reverse(str.begin(),str.end());
while(max-- >= 0) {
str.push_back(byte);
}
std::reverse(str.begin(),str.end());
}
int main() {
string input;
while(cin>>input) {
getResult(input);
cout<<input<<endl;
}
return 0;
}
#include <iostream>#include <map>#include <math.h>#include <string>usingnamespacestd;intmain(){map<char,int> a;ints=28,e=0;charch;map<char,int> book;string str="";cin>>str;intlen=str.size();for(intx=0;x<len;x++){book[str[x]]++;s=min(str[x]-'a',s);e=max(str[x]-'a',e);}intb=0;for(intx=s+'a';x<=e+'a';x++){if(b<book[x]){b=book[x];ch=x;}}for(intx=0;x<b;x++){cout<<ch;}for(intx=0;x<len;x++){if(str[x]!=ch){cout<<str[x];}}return0;}
# -*- coding: utf-8 -*-
import sys
import string
def chartranslate():
string0 = sys.stdin.readline()#输入
list1=[]
for i in string0:
if i != '\n':
list1.append(i)#转换成列表
list2=list(set(list1))#转换成集合 (去重)
count1=[]
for j in list2:#将集合中的元素在输入数据中的个数存到count
n=list1.count(j)
count1.append(n)
m=count1.index(max(count1))#求count集合中最大值的索引
list3=[]
list4=[]
for k in list1:
if list2[m]==k:
list3.append(k)#输入字符串最多的重复元素
else:
list4.append(k)#其他元素
list5=list3+list4
list6=''.join(list5)
print list6
# print(str1)
if __name__=='__main__':
chartranslate() var readline=require('readline');
var r1=readline.createInterface({
input:process.stdin,
output:process.stdout
});
r1.on('line',function(data){
var num=0;
var str="";
var s='';
var obj=data.split('').reduce(function(prev,curr){
prev[curr]?prev[curr]++:prev[curr]=1;
return prev;
},{});
for(var key in obj){
if(obj[key]>num){
num=obj[key];
s=key;
}
}
while(num>0){
str+=s;
num--;
}
console.log(str+data.replace(new RegExp(s,'g'),''));
})