面试老是会遇到一些用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");
}
}
}
分享到:
相关推荐
倒序链表指的是将原链表中的元素顺序进行反转。例如,假设有一个链表为`1->2->3->4->5`,将其倒序后变为`5->4->3->2->1`。倒序链表的操作可以用于多种场景,比如数据处理、算法设计等。 #### Java实现倒序链表的...
这里,我们使用了`std::algorithm`库中的`reverse()`函数,它接受两个迭代器作为参数,将它们之间(包括开始和结束位置的元素)的元素顺序反转。 3. **C++11中右值引用和`std::move`的应用**: 如果我们不希望...
逆序输出是编程中常见的操作,它可以用于各种场景,比如排序算法的逆序输出结果、倒序读取文件内容或者实现某些特定逻辑。理解并熟练掌握这种技巧对于Java开发者来说是至关重要的,它能帮助你在处理数据时更加灵活...
这个例子使用了一个循环来实现数字的倒序输出: ```java package c10; import java.util.Scanner; public class zhengzhengshu { public static void main(String[] args) { Scanner input = new Scanner...
这个可能是指在保持单词顺序不变的情况下,仅倒序每个单词内部的字符。这需要对字符串进行分割,然后逐个单词进行反转,最后再组合起来。在处理自然语言时,这样的操作有助于保持语义的完整性。 4. **全组合**: ...
- 迭代器是访问集合元素的主要方式,它通过内部类实现,所有容器的迭代器都实现了`Iterator`接口。通过调用`iterator()`方法可以从容器中获取迭代器实例,然后使用`hasNext()`和`next()`方法遍历并取出元素。 3. *...
3.9 初始的迭代过程`ditui`被改写为递归过程`digui`,将打印从`j`到1的倒序数字。 3.10 递归过程`test`被改写为非递归过程,利用栈`S`保存未处理的输入,先读取所有输入值压入栈,然后在栈非空时弹出一个值,累加到...
* 很多迭代器的实现。 * 从数组或者枚举到集合的适配器。 * 用来测试或者创建典型 set 理论的集合属性,例如与、或、闭包。 7. Commons-dbutil.jar: commons-dbutil.jar 对传统操作数据库的类进行二次封装,可以把...
很多迭代器的实现。 从数组或者枚举到集合的适配器。 用于测试或者创建典型 set 理论的集合属性,例如与、或、闭包。 7. commons-dbutil.jar commons-dbutil.jar 对传统操作数据库的类进行二次封装,可以把结果集...
总结来说,Java递归法求字符串逆序是通过将问题不断分解为更小的部分(在这里是去掉首字符的子字符串)并逐层解决,最终通过合并所有子问题的解(将字符按相反顺序连接)来得到原问题的解。这种方法体现了递归在解决...
- **功能**:返回一个逆序迭代器,可以按照反向顺序遍历列表中的元素。 - **示例代码**: ```java Iterator it1 = list.descendingIterator(); System.out.print("descendingIterator遍历结果: "); while (it1....
在这个例子中,`decimalToBinary` 函数通过循环处理,每次迭代时计算余数并将其添加到结果字符串,然后更新十进制数。当十进制数变为0时,循环结束。最后,通过调用 `reverse()` 方法反转字符串顺序,确保输出正确的...
list指令是一个迭代输出指令,用于迭代输出数据模型中的集合,list指令的语法格式如下: ... 上面的语法格式中,sequence就是一个集合对象,也可以是一个表达式,但该表达式将返回一个集合对象,而item是一个任意的...
JavaScript是一种广泛应用于网页和服务器端开发的脚本语言,它提供了多种方式来实现字符串的倒序操作。以下是对这个主题的详细讲解: 1. 字符串方法:`split()`、`reverse()` 和 `join()` - `split()` 方法用于将...
- 通过减少递归深度、使用缓存或迭代替代 75. **比较两个对象的值和内存地址** - 使用 == 比较值,使用 id() 函数比较内存地址 76. **格式化显示对象** - 使用 repr() 或 str() 函数 77. **复制一个序列并去掉...
- **知识点**:For循环是一种常用的循环结构,用于按指定步长迭代一定范围内的数值。 - **正确选项**:D. 0。根据题目中的For循环定义,从10到0倒序,步长为3,实际上不会进入循环体。 #### 题目8:工具栏启动按钮...