实现给定一个字符串剔除重复字符,并统计各个字符出现的次数

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;


public class test {

	public static void main(String[] args) {
		String oldstring="adbgfxedaabnxjhssaa";
		String newString="";
		Map<String, Integer> map=new HashMap<String, Integer>();//存储各个字符以及字符对应的出现次数
		for(int i=0;i<oldstring.length();i++){
				String a=String.valueOf(oldstring.charAt(i));
				if(newString.contains(a)){//判断新字符串中是否包含了a字符
					map.put(a, map.get(a)+1);//包含,给map集合中a-key对应的value值加1
				}else{//没有包含,即a字符在新字符串中是第一次出现,将map集合中a-key对应的value值置为1
					newString=newString.concat(a);
					map.put(a,1);
			}
		}
		Set<String> set=map.keySet();
		for (String string : set) {
			Integer counti=map.get(string);
			System.out.println(string+"出现的次数是,"+counti+"次");
		}
		System.out.println(newString);
	}

}

运行结果:


### 回答1: 这道题要求输入一个字符串,根据给定的条件进行排序,并输出排好序的字符串。排序条件为:将字符串从中间一分为二,左边部分按照字符的ascii值升序排序,右边部分按照字符的ascii值降序排序,然后将左边部分和右边部分交替合并。需要注意的是,如果字符串长度为奇数,那么中间的字符不参与排序处理。例如,输入"dcbahgfe",则输出"hgfeabcd";若输入"5432198765",则输出"876591234"。 ### 回答2: 首先,我们需要将输入的字符串按照题目所给的条件进行排序。那么,我们可以将字符串从中间一分为二,对左半部分进行升序排列。然后,将排序好的左半部分和右半部分交换位置,得到最终的排序结果。 具体实现时,我们可以先判断输入字符串的长度,如果长度为奇数,则将中间字符剔除。然后,将字符串切为左右两个部分,对左半部分进行升序排列。最后,将排序好的左半部分和右半部分进行交换位置,得到最终的排序结果。 以下是具体的代码实现: ``` string sortString(string s) { // 若字符串长度为奇数,则剔除中间字符 if (s.length() % 2 == 1) { s.erase(s.begin() + s.length() / 2); } // 切分字符串为左右两部分 string left = s.substr(0, s.length() / 2); string right = s.substr(s.length() / 2); // 对左半部分进行升序排列 sort(left.begin(), left.end()); // 将排序好的左半部分和右半部分进行交换位置 return right + left; } ``` 以上代码中,我们使用了 STL 中的 sort 函数对左半部分进行升序排列。在排序完成后,我们将右半部分和排序后的左半部分拼接起来,得到最终的排序结果。 ### 回答3: 题目要求我们按照一定的规则对输入的字符串进行排序并输出。这个规则是将字符串从中间一分为二,将左边部分按照字符的ascii值进行升序排序。然后再将排好序的左边部分和右边部分进行交换。 对于这道题目,我们需要先将字符串分为两个部分,然后对左边部分进行排序。可以使用一些排序算法来完成这个任务,例如冒泡排序、选择排序、插入排序、希尔排序等。 在排序完左边部分之后,我们把排好序的左边部分和右边部分进行交换,最后将结果输出即可。例如输入dcbahgfe,我们首先将其分为两个部分,得到了dcbah和gfe。然后对左边部分进行升序排序,得到了abcdh,最后将abcdh和gfe进行交换得到了hgfeabcd,即为最终的输出结果。 需要注意的是,如果输入的字符串长度为奇数,则最中间的字符不参与处理。这意味着在对字符串进行分割时,需要判断字符串长度的奇偶性来决定是否需要丢弃最中间的字符。 总之,这道题目的解决思路其实比较简单。我们只需要将问题分解为多个小问题,并采用适当的算法来解决这些小问题,最终就可以得到正确的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值