码迷,mamicode.com
首页 > 其他好文 > 详细

字符串置换问题

时间:2017-06-10 23:34:55      阅读:354      评论:0      收藏:0      [点我收藏+]

标签:思路   str1   ret   out   bsp   log   空字符串   转换   lint   

最近在lintcode上刷题,遇到这一问题。

问题描述:

给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换。

置换的意思是通过改变顺序可以使得两个字符串相等。
输入样例:
"abc" 为 "cba" 的置换。
"abbc" 不是 "abcc" 的置换。

解决思路:

可通过排序来解决此问题,将其转换为字符数组,首先判断字符串长度是否相等,如果不相等则不是置换,二是判断为空字符串这一特殊情况,最后可通过Arrays.sort()这一方法对数组进行排序,比较这两个数组是否相等。如果相等,则为置换,如果不相等,则不是置换

 1 import java.util.Arrays;
 2 import java.util.Scanner;
 3 
 4 public class Main {
 5 
 6     public static void main(String[] args) {
 7         Scanner in = new Scanner(System.in);
 8         while(in.hasNext()){    //多组数据输入
 9         String str1 = in.next();    //输入字符串str1
10         String str2 = in.next();    //输入字符串str2
11         boolean x = Main.f(str1, str2);        //调用函数
12         if(x==true){
13             System.out.println("str1是str2的置换");
14         }
15         else{
16             System.out.println("str1不是str2的置换");
17         }
18     }
19     }
20     public static boolean f(String s1,String s2){    //判断是否为置换的函数
21         char ch1[] = s1.toCharArray();    //转换为字符数组
22         char ch2[] = s2.toCharArray();
23         if(s1.length()!=s2.length()){    //判断长度是否相等
24             return false;
25         }
26         if(s1.equals("")&&s1.equals("")){    //判断空字符串这一特殊情况
27             return true;
28         }
29         Arrays.sort(ch1);    //数组排序
30         Arrays.sort(ch2);
31         boolean m = true;
32         int j=0;
33         for(int i=0;i<s1.length();i++){  //比较排序后的数组是否相等
34             if(ch1[i]!=ch2[j])
35                m = false;
36             j++;
37         }
38         return m;
39     }
40 }

 

字符串置换问题

标签:思路   str1   ret   out   bsp   log   空字符串   转换   lint   

原文地址:http://www.cnblogs.com/cppeterpan/p/6980010.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!