2015-08-28 27 views
-1

嗨,朋友,我從基礎知識學習java .. 我已經寫了我自己的火焰程序,我碰到了一些poit,請幫助我。混淆:使用簡單邏輯的火焰程序

我的代碼

import java.util.*; 


class Solution 
{ 
public static void main(String arg[]) 
{ 
    int i,j,count=0; 
    String f ="FLAMES"; 
    char[] fl = f.toCharArray(); 

    Scanner sc = new Scanner(System.in); 
    String s1 = sc.nextLine(); 
    String s2 = sc.nextLine(); 

    for(i=0;i<s1.length();i++) 
    { 
     for(j=0;j<s2.length();j++) 
     { 
     if(s1.charAt(i)==s2.charAt(j)) 
     { 
      count+=1; 
      break; 
     } 
     } 
    } 
    int x=(s1.length()+s2.length())-(count*2); 
    for(i=0;i<=x;i++) 
    { 
     */need logic here/* 

    } 
    System.out.print(fl); 

    } 
    } 

我已經從字符串中計算的無與倫比的字母數。 現在我必須找到並打印匹配計數例如:F或A或M

注意

我讀了很多程序的例子,但使用完全不同的存在。

我需要刪除「FLAMES」字符串中的元素並顯示剩餘的元素。

請幫我....

+1

*現在我必須找到並打印計數前的匹配:F或A或M * F,A或M以何種方式查找和打印計數匹配的示例? –

+0

例如:如果計數是6,在第一次水合作用中,我需要刪除S,在第二次水合作用中,我需要刪除F,在第三A等等......最後剩餘的一個字母我必須打印。 –

+0

你可以把一些你期望的樣本輸入和輸出嗎?我不確定這個問題到底是什麼。 –

回答

0

我也以同樣的方式,你做了什麼,做了火焰程序...只是檢查我的和你瞭解我所使用的邏輯......一些名字,如果檢查你不明白不要猶豫,問我......

import java.util.*; 
public class Flames 
{ 
    public static void main() 
    { 
     int sp=0; 
     Scanner sc=new Scanner(System.in); 
     System.out.println("enter two names"); 
     String s=sc.nextLine(); 
     String s1=sc.nextLine(); 
     String p="flames"; 
     String p1="flames"; 
     String s2=""; 
     String m=""; 
     for(int i=0;i < s.length();i++) 
     { 
      if(s.charAt(i)==' ') 
      { 
      } 
      else 
      { 
       m=m+s.charAt(i); 
      } 
     } 
     s=m; 
     m=""; 
     for(int i=0;i < s1.length();i++) 
     { 
      if(s1.charAt(i)==' ') 
      { 
      } 
      else 
      { 
       m=m+s1.charAt(i); 
      } 
     } 
     s1=m; 
     m=""; 
     int l=s.length(); 
     int l1=s1.length(); 
     for(int i=0;i < l;i++) 
     { 
      int sl=0; 
      for(int j=0;j < s1.length();j++) 
      { 
       if(s.charAt(i)==s1.charAt(j)) 
       { 
        if(sl==0) 
        { 
        sl++;sp++;s2=s2+" " ; 
        } 
        else 
        { 
        s2=s2+s1.charAt(j); 
        } 
       } 
       else 
       { 
        s2=s2+s1.charAt(j); 
       } 
      } 
      s1=s2; 
      s2=""; 
     } 
     sp=sp*2; 
     int c=(l-1)+(l1-1)-(sp-1); 
     for(int i=1;;i++) 
     { 
      String z="";p=p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p; 
      String mn=""; 
      char c1=p.charAt(c); 
      for(int j=0;j < p1.length();j++) 
      { 
       if(c1==p1.charAt(j)) 
       { 
        mn=p1.substring(j+1)+mn; 
         break; 
       } 
       else 
       { 
        mn=mn+p1.charAt(j); 
       } 
      } 
      for(int k=0;k < p1.length();k++) 
      { 
       if(c1==p1.charAt(k)) 
       { 
       } 
       else 
       { 
        z=z+p1.charAt(k); 
       } 
      } 
      p1=z; 
      p=mn; 
      if(mn.length()==1) 
      { 
       System.out.println(mn); 
        break; 
      } 
     } 
    } 
} 
0

現在,你得到了數即無與倫比的數量和現在,你必須遍歷字母火焰和刪除各一個,直到一個是剩下的,這是兩個人之間所需要的關係。

現在,想想12小時的時間。當有人說時間16時,你解釋爲4.爲什麼,因爲你正在檢查0-12範圍內的數字。你從一開始即0

16 =(16÷12)添加過量給出4.

有總的在火焰6名的字母。範圍0-5指數。 一旦信件被刪除,它的範圍爲0-4。最後,談到一個。

因此,讓我們考慮17.

第一步驟中計數:

17的5 的startIndex = 0 17÷5的範圍內給出2

第二索引是A.如此刪除A. nd從M開始

FLMES

。現在M是2

第二步:

範圍:4 的startIndex = 2 (2 + 17)÷4 =(19÷4)= 3。現在刪除第三個索引E.

FLMS

第三步:

範圍:3 的startIndex = 3 (3 + 17)÷3 = 2除去第二索引。

FLS

第四步:

範圍:2 的startIndex = 2 (2 + 17)÷2 = 1移除第一索引字母。

FS

第五步:

範圍:1 的startIndex = 1 (1 + 17)÷1 = 0 個索引字母F與'剩餘刪除0 F'

F是答案

start 
startIndex = 0 
Iterate over 5 i.e beginning range 
starIndex = (startIndex + count) ÷ range; 
remove letter at starIndex. 
end 

更好地在列表中存儲火焰,這將負責清除和重新排序索引。

注:

無與倫比的計數差異在這兩個單詞的每個字母的數量之和。

unMatchedCount = abs(count[a] in firstWord - count[a] in secondWord) 
        + abs(count[b] in firstWord - count[b] in secondWord) 
        .............. 
        + .............. till z. 

所以它更好地計算使用哈希計數更好的性能。