通过填充缺少的字符制作回文(如果可能)

时间:2016-09-04 13:03:24

标签: java palindrome missing-data

我最近在java中使用了一个成功编译的程序,但在执行过程中,输入字符串后,没有显示任何内容,允许我在执行页面上输入任何内容。程序如下: - 用户输入一个字符串,其中包含由'(#句号)表示的几个缺失字母。 程序应填写那些句号,以制作最小(按字典顺序)的回文词。如果这是不可能的......显示不可能做回文。如果我在任何地方出错,请告诉我。谢谢:))



import java.io.*;
public class JavaApplication {

    static String s;
    
    //main method
     public static void main(String[] args)throws IOException{
         BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        
        System.out.println("Enter the string with '.' as their missing characters:");
        	s=br.readLine();
        	int len=s.length();
        	String result;
        	if(len%2==0){
                    result=even();
                }
                else
        		result=odd();
        	System.out.println(result);
        
     }
     
   
     //Function to handle odd no. of characters
     static String odd(){
    	 int len=s.length();
    	 int mid=(len-1)/2;
    	 for(int i=1;i<=mid;i++){
    		 if(s.charAt(mid-i)=='.'||s.charAt(mid+i)=='.'){
                         if(s.charAt(mid)=='.'){
                             s=s.substring(0,mid)+'a'+s.substring(mid+1);
                         }
    			 if(s.charAt(mid-i)=='.'&&s.charAt(mid+i)=='.'){
    				 s=s.substring(0,(mid-i))+'a'+s.substring((mid-i)+1,mid)+s.charAt(mid)+s.substring(mid+1,mid+i)+'a'+s.substring((mid+i)+1);
    			 }
    			 if(s.charAt(mid-i)=='.'){
    				 s=s.substring(0,mid-i)+s.charAt(mid+i)+s.substring((mid-i)+1);
    			 }
    			 if(s.charAt(mid+i)=='.'){
    				 s=s.substring(0,(mid+1))+s.charAt(mid-i)+s.substring((mid+1)+1);
    			 }
    		 }
         }
    	 String result=checkPalindrome();	
    	 return result;
     }
     
     //Function to handle even no. of characters
     static String even(){
    	 int len=s.length();
    	 int mid2=len/2,mid1=mid2-1;
    	 for(int i=0;i<mid2;i++){
    		 if(s.charAt(mid1-i)=='.'||s.charAt(mid2+i)=='.'){
    			 if(s.charAt(mid1-i)=='.'&&s.charAt(mid2+i)=='.'){
    				 s=s.substring(0,mid1-i)+'a'+s.substring((mid1-i)+1,mid2+i)+'a'+s.substring((mid2+i)+1);
    			 }
    			 if(s.charAt(mid1-i)=='.'){
    				 s=s.substring(0,mid1-i)+s.charAt(mid2+i)+s.substring((mid1-i)+1);
    			 }
    			 if(s.charAt(mid2+i)=='.'){
    				 s=s.substring(0,mid2+i)+s.charAt(mid1-i)+s.substring((mid2+i)+1);
    			 }
    		 }
    	 }
    	 String result=checkPalindrome();	
    	 return result;
     }
     
     
     //Check if s is palindrome
     static String checkPalindrome(){
    	 String s1=s;
    	 for(int i=0;i<s1.length();i++){
    		 char ch=s1.charAt(i);
    		 s1=ch+s1;
    	 }
    	 if(s1.equals(s))
    		 return s1;
    	 else{
    		 s1="cannot form any palindrome";
    		 return s1;
    	 }
     }
    
    
}
&#13;
&#13;
&#13;

0 个答案:

没有答案