我一直在研究两种分别转置和反转置字符串的方法。据我所知,我提出的解决方案都有效。我只想知道我是否可以用更简单的方式解决这些问题。我的代码似乎对于正在执行的任务来说太长了。第一个方法 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