私は、文字列をそれぞれ転置および転置解除する 2 つのメソッドに取り組んできました。私が思いついた解決策は、私の知る限りでは両方とも機能します。これらの問題をより簡単な方法で解決できたかどうかを知りたいだけです。私のコードは、実行中のタスクに対して長すぎるようです。最初のメソッド、transpose() は、パラメーターとして文字列を取り、それを転置します。「bridge」と入力すると、出力は「bergid」になります。同様に、unTranspose() メソッドで、ユーザーが「bergid」と入力すると、出力は「bridge」になります。
public void transpose( String s )
{
String t = "";
int end = s.length() - 1;
for ( int i = 0; i < s.length() / 2; i++ )
{
t += Character.toString( s.charAt( i ) ) + Character.toString( s.charAt( end ) );
end--;
}
// Lenth of String is odd
if ( s.length() % 2 == 1 )
{
// add character in middle of String to the end of the new String
t+= Character.toString( s.charAt( s.length() / 2 ) );
}
System.out.println( t );
}
public void unTranspose( String s )
{
String t = "";
// Length of String is odd
if ( s.length() % 2 == 1 )
{
for ( int i = 0; i < s.length(); i+=2 )
{
t+= Character.toString( s.charAt( i ) );
}
for ( int i = s.length() - 2; i > 0; i -= 2 )
{
t += Character.toString( s.charAt( i ) );
}
System.out.println( t );
}
// Length of String is even
else if ( s.length() % 2 == 0 )
{
for ( int i = 0; i < s.length() - 1; i+=2 )
{
t+= Character.toString( s.charAt( i ) );
}
for ( int i = s.length() - 1; i > 0; i -= 2 )
{
t+= Character.toString( s.charAt( i ) );
}
System.out.println( t );
}
}
私のコードは恐ろしく見えます。コードを正しくフォーマットすることにまだ慣れていません。我慢してください。
御時間ありがとうございます
意味
transpose
--------->
"123Xcba" "1a2b3cX"
<-----------
untranspose