去除重复字符并排序

运行时间限制:无限制

内容限制: 无限制

输入: 字符串

输出: 去除重复字符并排序的字符串

样例输入: 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);

   }

  }

}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 10:56:16

去除重复字符并排序的相关文章

2015年华为校招机试题和代码实现(分解字符串,拼音转数字,去除重复字符并排序,等式变换)

再来一套2015年的华为机试题. 第一题(60分): 按要求分解字符串,输入两个数M,N:M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0.例如:输入2,8, "abc" ,"123456789",则输出为"abc00000","12345678","90000000" 分析思路: 容易题 1.获得字符串的长度length后,判断与要输出位数N的大小,大于N的话,直接printf前N位字符,然

去除反复字符并排序

执行时间限制:无限制 内容限制: 无限制 输入: 字符串 输出: 去除反复字符并排序的字符串 例子输入: aabcdefff 例子输出: abcdef 思路: 这个题用数组来哈希,时间复杂度为O(n) 1)    初始化一个int数组hash,数组的角标和数组的值正好构成一对<key,value>; 2)    遍历字符串,将每一个字符放入数组中相应的位置,出现过得字符,其数组值为1 3)    遍历数组,输出数组中数组值为1所相应的字符 Java解法: import java.util.Sc

string [] 去除重复字符两个方法

不废话直接看图 结果 代码: this.txtListHTML.Text = String.Join(",", list.Replace("\r\n", ",").Split(',').Distinct()).Replace(",", "\r\n");

SQL Server数据库--》top关键字,order by排序,distinct去除重复记录,sql聚合函数,模糊查询,通配符,空值处理。。。。

top关键字:写在select后面 字段的前面 比如你要显示查询的前5条记录,如下所示: select top 5 * from Student 一般情况下,top是和order by连用的 order by用在表名的后面 order by后面就填你要按它排序的字段,是升序排序(从小到大排序) percent:百分比 %=percent 比如要显示5%的数据处理,不能写top 5%,而是top 5 percent 提示:如果top 5 percent出来的数是3.1条数据的话,是取四条数据,而不

js字符串去除连续或全部重复字符

js字符串去除连续重复字符 ()和\number 配合使用表示重复正则第number个括号内匹配到的内容,如:(\d)\1表示重复第一个匹配块(\d)即等价于如果(\d)匹配到a,则表达式为aa 相应的可以:(some)\1* 或(some)\1+或(some)\1? 表示重复第一个匹配快得到的内容 任意次或者 至少一次或 一次or零次 1 var s = "1122333455"; 2 3 var s1 = s; 4 var c; 5 var cc = s.match(/(\d)\1

join的一对多,去除重复,排序优先的group方法

想将问题列表按照最新回答来排列.但问题和回答是分拆在两张表来存放的.所以,要完成上述需求,需从主表“问题”取显示数据,但是得按照次表(回答)的更新日期来排序. 用join来做,始终无法去除重复,折腾了两天,最后还是必须得用groupby(影响性能的东东). 去除了重复,但是排序又不正确.    MySQL对语句的处理方式是: 先群组,群组后再排序,但是我现在想排序后再群组该如何解决呢? $sql = "SELECT ask.* FROM ly_ask JOIN `answer` ON ask.i

leetcode——Remove Duplicates from Sorted List II 删除排序字符串中重复字符(AC)

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. For example, Given 1->2->3->3->4->4->5, return 1->2->5. Given 1->1->1->2->3, return 2->3

计算 num 的 n 次幂、n 的阶乘、斐波那契数列、字符串的字节长度、去除字符串中的重复字符

1 //计算 num 的 n 次幂 2 function numPow(num, n) { 3 if (n == 1) { 4 return num; 5 } 6 return num * numPow(num, n - 1); 7 } 8 9 //计算 n 的阶乘 10 function nFactorial(n) { 11 if (n == 1) { 12 return 1; 13 } 14 return n * nFactorial(n - 1); 15 } 16 17 //斐波那契数列,

Leetcode(无重复字符的最长子串;删除排序链表中的重复元素II;加一;最后一个单词的长度;相同的树)

1.无重复字符的最长子串 这题需要用到滑动窗口法,有许多问题都可以考虑使用滑动窗口法:https://www.geeksforgeeks.org/tag/sliding-window/ 因为用c++,所以用到set容器:std::count 2.删除排序链表中的重复元素II 3.加一 1 class Solution { 2 public: 3 vector<int> plusOne(vector<int>& digits) { 4 int n=digits.size()-