`
squll369
  • 浏览: 108703 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

String 顺序倒序迭代实现

阅读更多

面试老是会遇到一些用String来考算法的题目,要取出String里的每一个字符然后处理,比如下面这种:判断下面的字符串是否对称:a,aa,aba.

 

今天就写了一个简单的String迭代,支持顺序,倒序处理,调用stringNext拿到每一个位置上的字符.
代码如下:

 

public class StringOrder {
	
	private String s;
	private boolean order = true;
	private char stringCur;
	public char getStringCur() {
		return stringCur;
	}

	public int getLoc() {
		return loc;
	}

	private int loc;
	
	
	public StringOrder(String s){
		this.s = s;
	}
	
	public StringOrder(String s, boolean order){
		this.s = s;
		this.order = order;
		if(!order){
			loc = s.length();
		}
	}
	
	public String stringNext(){
		if(!order){
			if(loc == 0){
				return null;
			}
			loc--;		
			stringCur = s.charAt(loc);
		}else{
			if(loc == s.length()){
				return null;
			}
			stringCur = s.charAt(loc);
			loc++;
		}	
		return stringCur+"";
	}
}

 

利用这个解决上面的问题,代码如下:

 

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String a = "987t123aad1daa321t789";
		System.out.println(new Test().judgePairString(a));
		new Test().printPairString(a);
	}
	
	public boolean judgePairString(String s){
		StringOrder o1 = new StringOrder(s,true);
		StringOrder o2 = new StringOrder(s,false);
		
		for(int i=0;i<s.length();i++){
			if(!o1.stringNext().equals(o2.stringNext())){
				return false;
			}
		}
		return true;
	}
	
	public void printPairString(String s){
		if(judgePairString(s)){
			for(int i=0;i<s.length()/2;i++){
				System.out.println("PairString[" + i + "]:" + s.charAt(i));
			}
		}else{
			System.out.println("[" + s + "] is not a PairString");
		}
	}
}
 

 

分享到:
评论

相关推荐

    java 实现倒序链表

    倒序链表指的是将原链表中的元素顺序进行反转。例如,假设有一个链表为`1-&gt;2-&gt;3-&gt;4-&gt;5`,将其倒序后变为`5-&gt;4-&gt;3-&gt;2-&gt;1`。倒序链表的操作可以用于多种场景,比如数据处理、算法设计等。 #### Java实现倒序链表的...

    用C++实现字符串倒序

    这里,我们使用了`std::algorithm`库中的`reverse()`函数,它接受两个迭代器作为参数,将它们之间(包括开始和结束位置的元素)的元素顺序反转。 3. **C++11中右值引用和`std::move`的应用**: 如果我们不希望...

    java 按相反的顺序输出

    逆序输出是编程中常见的操作,它可以用于各种场景,比如排序算法的逆序输出结果、倒序读取文件内容或者实现某些特定逻辑。理解并熟练掌握这种技巧对于Java开发者来说是至关重要的,它能帮助你在处理数据时更加灵活...

    java输入数字,输出倒序的实例

    这个例子使用了一个循环来实现数字的倒序输出: ```java package c10; import java.util.Scanner; public class zhengzhengshu { public static void main(String[] args) { Scanner input = new Scanner...

    StringProject

    这个可能是指在保持单词顺序不变的情况下,仅倒序每个单词内部的字符。这需要对字符串进行分割,然后逐个单词进行反转,最后再组合起来。在处理自然语言时,这样的操作有助于保持语义的完整性。 4. **全组合**: ...

    毕向东Java笔记(五)集合框架1

    - 迭代器是访问集合元素的主要方式,它通过内部类实现,所有容器的迭代器都实现了`Iterator`接口。通过调用`iterator()`方法可以从容器中获取迭代器实例,然后使用`hasNext()`和`next()`方法遍历并取出元素。 3. *...

    对串的所有操作都可以通过以下五个基本函数实现.doc

    3.9 初始的迭代过程`ditui`被改写为递归过程`digui`,将打印从`j`到1的倒序数字。 3.10 递归过程`test`被改写为非递归过程,利用栈`S`保存未处理的输入,先读取所有输入值压入栈,然后在栈非空时弹出一个值,累加到...

    java开发常用的jar包的作用解释.docx

    * 很多迭代器的实现。 * 从数组或者枚举到集合的适配器。 * 用来测试或者创建典型 set 理论的集合属性,例如与、或、闭包。 7. Commons-dbutil.jar: commons-dbutil.jar 对传统操作数据库的类进行二次封装,可以把...

    java开发常用的jar包的作用解释.pdf

    很多迭代器的实现。 从数组或者枚举到集合的适配器。 用于测试或者创建典型 set 理论的集合属性,例如与、或、闭包。 7. commons-dbutil.jar commons-dbutil.jar 对传统操作数据库的类进行二次封装,可以把结果集...

    java递归法求字符串逆序

    总结来说,Java递归法求字符串逆序是通过将问题不断分解为更小的部分(在这里是去掉首字符的子字符串)并逐层解决,最终通过合并所有子问题的解(将字符按相反顺序连接)来得到原问题的解。这种方法体现了递归在解决...

    LinkedList的用法

    - **功能**:返回一个逆序迭代器,可以按照反向顺序遍历列表中的元素。 - **示例代码**: ```java Iterator it1 = list.descendingIterator(); System.out.print("descendingIterator遍历结果: "); while (it1....

    java代码-2.任意给出一个十进制整数,将十进制整数转换为二进制数。

    在这个例子中,`decimalToBinary` 函数通过循环处理,每次迭代时计算余数并将其添加到结果字符串,然后更新十进制数。当十进制数变为0时,循环结束。最后,通过调用 `reverse()` 方法反转字符串顺序,确保输出正确的...

    freemarker总结

    list指令是一个迭代输出指令,用于迭代输出数据模型中的集合,list指令的语法格式如下: ... 上面的语法格式中,sequence就是一个集合对象,也可以是一个表达式,但该表达式将返回一个集合对象,而item是一个任意的...

    js代码-字符串倒叙输出

    JavaScript是一种广泛应用于网页和服务器端开发的脚本语言,它提供了多种方式来实现字符串的倒序操作。以下是对这个主题的详细讲解: 1. 字符串方法:`split()`、`reverse()` 和 `join()` - `split()` 方法用于将...

    Python经典题目100道题.pdf

    - 通过减少递归深度、使用缓存或迭代替代 75. **比较两个对象的值和内存地址** - 使用 == 比较值,使用 id() 函数比较内存地址 76. **格式化显示对象** - 使用 repr() 或 str() 函数 77. **复制一个序列并去掉...

    2021-2022计算机二级等级考试试题及答案No.1616.docx

    - **知识点**:For循环是一种常用的循环结构,用于按指定步长迭代一定范围内的数值。 - **正确选项**:D. 0。根据题目中的For循环定义,从10到0倒序,步长为3,实际上不会进入循环体。 #### 题目8:工具栏启动按钮...

Global site tag (gtag.js) - Google Analytics