我一直在研究两种方法,分别是Transpose和Untranspose一个String.我提出的解决方案都是我所知道的.我只是想知道我能否以更简单的方式解决这些问题.我的代码似乎对正在执行的任务来说太长了.第一个方法是transpose(),它将String作为参数并转置它.如果输入“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
解决方法:
使用递归
public static String transpose(String str) {
if (str == null || str.length() == 1 || str.length() == 2) {
return str;
} else {
return str.substring(0, 1) + str.substring(str.length() -1, str.length()) + transpose(str.substring(1, str.length() -1) );
}
}
public static String untranspose(String str) {
if (str == null || str.length() == 1 ||str.length() == 2) {
return str;
} else {
return str.substring(0, 1) + untranspose(str.substring(2, str.length())) + str.substring(1, 2);
}
}
标签:java,transpose,string 来源: https://codeday.me/bug/20190610/1213517.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。