java一个定常字符串,求出相邻两个相同元素出现的次数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java一个定常字符串,求出相邻两个相同元素出现的次数相关的知识,希望对你有一定的参考价值。
例如asdfddfangaanaassdss中dd出现一次/aa出现2次/dd出现2次
类似于冒泡排序中相邻两个元素两两对比;
public static void main(String[] args)
String s="asdfddfangaanaassdss";
String arr[],srr[],str="";
StringBuilder stb=new StringBuilder();
for (int i = 0; i < s.length()-1; i++)
if(s.charAt(i)==s.charAt(i+1))
stb.append(s.substring(i,i+2)+",");
arr=new String(stb).split(",");
for (int i = 0; i < arr.length; i++)
if(!str.contains(arr[i]))
str+=arr[i]+",";
srr=new String(str).split(",");
for (int i = 0; i < srr.length; i++)
int count=0;
for (int j = 0; j < arr.length; j++)
if(srr[i].equals(arr[j]))
count++;
System.out.println(srr[i]+"出现:"+count+"次");
参考技术A import java.util.ArrayList;
public class Test
public static void main(String[] args)
String s = "abcdaebijkd";
ArrayList list = new ArrayList();
for(int i=0; i<s.length(); i++)
char c = s.charAt(i);
if(s.indexOf(c,i+1)>-1)
Character ch = new Character(c);
if(!list.contains(ch))
list.add(ch);
for(int i=0; i<list.size(); i++)
System.out.print(list.get(i)+",");
Windows PowerShell
Java中List 删除元素
在Java中,使用List时想要删除某个特定个元素怎么办?很好办!因为List接口有remove()这个方法,我们只需要调用remove()方法,就可以删除list中的某个元素。但是list自带的有一些坑,在相邻有相同元素时会掉坑:
使用list.remove()删除:
我们看到有两个“a”元素相邻,但是删除时却只删除了一个,这是为何呢?因为删除时,每删除一个元素,后边的元素都会左移一位,也就是下标会减1,在for循环中,删除第一个“a”时,i(下标)为0,此时list重排,后边的元素全部左移1位,也就是说第二个“a”元素的下标从1变为了0,而此时for循环进行已经第二次循环了,执行了i++,i的值为1,对应为“b”元素,然后向后循环,再也找不到“a”元素了。所以相邻元素有重复的话,只能删除一个。这明显不符合我们的需求。
那解决办法是什么呢?
1.删除后元素后,i-1
删除一个元素后,后边的元素左移1位,此时i-1,保证了下次循环能访问到左移了1位的元素。
2.反向删除
我们先从后边的元素开始循环,一个一个的往前面循环,找出特定元素删除
这样,就算删除了倒数第一个"a"元素,list重排,也只是把后边的元素左移1位,此时倒数第一个“a”元素(下标为1)被删除,接着b替代了a成为了下标为1的元素,但前边的元素不变,i-- = 0 后依然能够找到其相邻的a元素。
3.使用迭代器删除(iterator)(推荐)
4.赋值给新的list
注意:在进行普通for循环删除时,不要把list.size()抽离出去赋值给变量,然后用此变量做为for条件, 因为删除时,list.size()的值是会改变的,要把list.size作为for条件。
以上是关于java一个定常字符串,求出相邻两个相同元素出现的次数的主要内容,如果未能解决你的问题,请参考以下文章
、设数组a有10个整型元素,编程求出a中各相邻两个元素的和,并存入数组b中,然后输入