2011-01-23 1 views
0

나는 스택 데이터 구조를 사용하는 것 이외의 문자열의 palindrome을 찾는 다른 효율적인 방법을 원합니다. 이것은 스택 작업을 사용하여 작성한 코드입니다."STACK"추상 데이터 유형을 사용하는 다른 회문 방법을 찾는 다른 방법은 없습니까?

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 

package StringRevUsingStack; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
public class StringReverseThroughStack { 
    // private data members; 
    private String InputStr; 
    private String OutputStr; 

    //Constructor 
    public StringReverseThroughStack(String ip){ 
     InputStr = ip; 
    } 

    public String doReverse(){ 
     Stack theStack = new Stack(InputStr.length()); 
     String revStr; 
     for(int i=0;i<InputStr.length();i++) 
     { 
      theStack.push(InputStr.charAt(i)); 
     } 
     revStr=""; 
     while(!theStack.isEmpty()){ 
      revStr+=theStack.pop(); 
     } 
     return revStr; 
    } 

    public static void main(String args[])throws IOException{ 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     System.out.println("Enter the String:"); 
     String ip=br.readLine(); 
     StringReverseThroughStack theStr = new StringReverseThroughStack(ip); 
     String op=theStr.doReverse(); 
     if(ip.compareTo(op)==0) 
      System.out.println("It is a palindrome"); 
     else 
      System.out.println("It is a not palindrome"); 

    } 

} 
class Stack{ 
    private int maxSize; 
    private char[] stackArray; 
    private int Top; 

    public Stack(int max){ 
     maxSize = max; 
     stackArray = new char[maxSize]; 
     Top=-1; 
    } 
    public void push(char item){ 
     stackArray[++Top]=item; 
    } 

    public char pop(){ 
     return stackArray[Top--]; 
    } 

    public char peek(){ 
     return stackArray[Top]; 
    } 

    public boolean isEmpty(){ 
    return (Top == -1); 
    } 

} 
+0

은 무엇을 생각 했는가? 어떤 옵션을 생각해 냈습니까? – Oded

답변

0

StringBufferreverse() 방법을 갖는다. 그게 당신이 필요한 전부 여야합니다.

+1

그냥 질문을 이동합니다 ("스택을 사용하지 않고 문자열을 뒤집을 수 있습니까?"). – delnan

+0

@delnan : 좋은 지적 :) –

0

단순한 for 루프를 사용하면 역순으로 문자열을 반복 처리 할 수 ​​있습니다.

(가정 자바)

public String ReverseThisString(String inputStr) { 
    String outputStr = new String(); 

    for(int i = inputStr.length() - 1; i >= 0; --i) { 
     outputStr += String.valueOf(inputStr.charAt(i)); 
    } 

    return outputStr; 
}