美文网首页Orient
字符串的3个基本算法

字符串的3个基本算法

作者: 不知名的蛋挞 | 来源:发表于2017-07-24 21:21 被阅读16次
1.如何在字符串中找到第一个不重复的字符

方法一
  用LinkedHashMap来记录字符个数,因为LinkedHashMap维持的元素顺序与插入顺序一致,而我们正是按照字符串中字符出现的顺序来将字符插入Map中的。当我们扫描字符串时,只需要迭代LinkedHashMap并找出到第一个值为1的元素,那便是第一个非重复的字符。

方法二
  使用HashMap,我们会在第一扫描计算各个字符的出现次数保存在HashMap中之后,再次遍历字符串并从Map中获取每个字符的个数去找到第一个不重复的字符。由于我们从左往右扫描字符,当找到某个字符的计数为1时,我们就可以跳出循环,它就是第一个非重复的字符。

2.list去重

方法一: 通过Iterator 的remove方法

public void testList() {  
   
 List<Integer> list=new ArrayList<Integer>();  
   
 list.add(1);  
 list.add(2);  
 list.add(4);  
 list.add(1);  
 list.add(2);  
 list.add(5);  
 list.add(1);  
 List<Integer> listTemp= new ArrayList<Integer>();  
 Iterator<Integer> it=list.iterator();  
 while(it.hasNext()){  
  int a=it.next();  
  if(listTemp.contains(a)){  
   it.remove();  
  }  
  else{  
   listTemp.add(a);  
  }  
 }  
 for(Integer i:list){  
  System.out.println(i);  
 }  
}  

方法二:直接将结果赋值给另一个List

public void testList2() {  
   List<Integer> list=new ArrayList<Integer>();  
   list.add(1);  
   list.add(2);  
   list.add(4);  
   list.add(1);  
   list.add(2);  
   list.add(5);  
   list.add(1);  
   List<Integer> tempList= new ArrayList<Integer>();  
   for(Integer i:list){  
       if(!tempList.contains(i)){  
           tempList.add(i);  
       }  
   }  
   for(Integer i:tempList){  
       System.out.println(i);  
   }  
}     

上面的方法很麻烦?现在教你一句话实现JAVA去重:

//不带类型写法
List listWithDup = new ArrayList();
List listWithoutDup = new ArrayList(new HashSet(listWithDup));

//带类型写法(以String类型为例)
List listWithoutDup = new ArrayList<>(new HashSet<>(listWithDup));
3.字符串逆序输出

方法一

String str="qwertyuiop";
// 字符串下标从0开始,长度-1结束。倒序所以从长度-1开始,0结束。
for (int i = str.length()-1; i >= 0; i--) {
   System.out.print(str.charAt(i));
}

方法二

StringBuilder sb=new StringBuilder("qwertyuiop");
String s = sb.reverse().toString();
System.out.print(s);

相关文章

  • 一道关于字符串压缩的面试题

    题目 编写一个算法,实现基本的字符串“压缩”算法,比如对于字符串'abbbbffcccdddcc',经过算法处理之...

  • 字符串匹配基础下——KMP 算法

    在所有的字符串匹配算法中,KMP 算法是最知名的,实际上,它和 BM 算法的本质是一样的。 1. KMP 算法基本...

  • KMP算法文章合集

    字符串的查找:朴素查找算法和KMP算法 暴力匹配算法与KMP算法(串的匹配) 字符串查找算法BF和KMP 字符串匹...

  • FCC-JS-BAS-Reverse a String-反转字符

    Basic Algorithm Scriting-基本算法脚本 翻转字符串 先把字符串转化成数组,再借助数组的re...

  • KMP字符串匹配算法

    KMP字符串匹配算法 先总结一下之前的几种字符串匹配算法 1 BF算法, 最简单的字符串匹配算法, 可以直接使用s...

  • 数据结构与算法-字符串

    字符串又被成为串 字符串的存储结构 字符串的比较 朴素的模式匹配算法 BF算法

  • 字符串匹配算法

    场景:字符串A为主串,字符串B为模式串,比较字符串B是否能够在字符串A中进行匹配? 匹配算法:BF算法和RK算法。...

  • BF算法&RK算法

    一、字符串基本操作实现 1、生成一个其值等于chars的串T 二、 BF算法-爆发匹配算法 思路: 分别利用计数指...

  • 数据结构与算法 -- 串,BF算法和RK算法

    BF算法 BF(Brute Force)算法,即暴力匹配算法 如果在字符串A中查找字符串B,那么字符串A就是主串,...

  • 数据结构与算法-- 暴力法查找子字符串

    数据结构与算法--子字符串查找 字符串的一种基本操作就是子字符串查找了,给定一段长度为N的文本字符串(主串)和长度...

网友评论

    本文标题:字符串的3个基本算法

    本文链接:https://www.haomeiwen.com/subject/esahwttx.html