去除反复字符并排序

执行时间限制:无限制
内容限制: 无限制
输入: 字符串
输出: 去除反复字符并排序的字符串
例子输入: aabcdefff
例子输出: abcdef

思路:
这个题用数组来哈希,时间复杂度为O(n)
1)    初始化一个int数组hash,数组的角标和数组的值正好构成一对<key,value>;
2)    遍历字符串,将每一个字符放入数组中相应的位置,出现过得字符,其数组值为1
3)    遍历数组,输出数组中数组值为1所相应的字符

Java解法:
import java.util.Scanner;

public class Main
{
 public static void main(String[] args)
 {
  Scanner cin=new Scanner(System.in);
  int hash[]=new int[256];
  if (cin.hasNext())
  {
   String temp=cin.next();
   func(temp, hash);
  }
 }
 
 public static void func(String str, int[] hash)
 {
  for (int i = 0; i < str.length(); i++)
  {
   char c=str.charAt(i);
   if (hash[c]==0)
   {
    hash[c]=1;
   }
  }
  for (int i = 0; i < hash.length; i++)
  {
   if (hash[i]!=0)
   {
    char c=(char)i;
    System.out.print(c);
   }
  }
 }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值