の最後の文字と私たちの課題の一環として、我々は最初の文字列を返すのいずれかのメソッドを持つクラスを作成していました各単語の文字または各単語の最後の文字。Javaのループ - 最初の文字列と私はサンノゼでのプログラミングのクラスにイントロで、現在午前すべての単語
インスタンス変数「という語句は、」方法でアクセスされるフレーズを保持します。連続した2がありことはありません
単語はスペースで区切られ、それは文字で始まる 、それがスペースで終わっていない 、 決して2つの連続したスペースがあり、 :ここ
がルールです数字または句読点。firstLetter(両方)とフレーズが空の場合lastLetter()メソッドは空の文字列を返す必要があります。
私の質問は:この問題へのより効率的な解決策は何ですか?私はアルゴリズムに慣れていないので、このシンプルな問題にもっと慣れたアプローチに感謝します。 firstLetter()メソッドとlastLetter()メソッドでは、forループ内で一度に2文字のステータスをチェックするのか、それとも1つだけをチェックするのでしょうか?ここで
は私のコードです:
/**
* Processes first and last letters of words
* @author (Adrian DeRose)
*/
public class StartToFinish
{
private String phrase;
/**
* Constructs a StartToFinish object
* @param myString the phase for this object
*/
public StartToFinish(String myString)
{
this.phrase = myString;
}
/**
* Gets first letter of every word in string.
*
* @return first letter of every word in string
*/
public String firstLetters()
{
String firstLetters = "";
if (Character.isLetter(this.phrase.charAt(0)))
{
firstLetters += this.phrase.substring(0,1);
}
for (int i = 1; i < this.phrase.length(); i++)
{
char currentCharacter = this.phrase.charAt(i);
String previousCharacter = Character.toString(this.phrase.charAt(i-1));
if (Character.isLetter(currentCharacter) && previousCharacter.equals(" "))
{
String characterString = Character.toString(currentCharacter);
firstLetters += characterString;
}
}
return firstLetters;
}
/**
* Gets last letter of every word in string.
*
* @return last letter of every word in string
*/
public String lastLetters()
{
String lastLetters = "";
char lastCharacter = this.phrase.charAt(lastIndex);
if (this.phrase.length() == 0)
{
return "";
}
for (int i = 1; i < this.phrase.length(); i++)
{
char currentCharacter = this.phrase.charAt(i);
char previousCharacter = this.phrase.charAt(i-1);
if (Character.isLetter(previousCharacter) && !Character.isLetter(currentCharacter))
{
String previousCharacterString = Character.toString(previousCharacter);
lastLetters += previousCharacterString;
}
}
if (Character.isLetter(lastCharacter))
{
lastLetters += Character.toString(lastCharacter);
}
return lastLetters;
}
}
ありがとうございました!
が、あなたはちょうどそれが見直されたいです。 com。 – csmckelvey
私は作業コードに関する質問であるため、この質問を議論の対象外としています。それはhttp://codereview.stackexchangeでよりよく適合します。COM/ –
最初の手紙を保管してください: 's.replaceAllを| "'最後の手紙を保管してください:' s.replaceAllを((、" "(<= \\ S)\\ S +(\\はね$)?")」(\\ s | ^)\\ S +(?= \\ S) "、" "' [Demo](http://ideone.com/XfJb4Q)。 – dasblinkenlight