字符串置换问题

最近在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 }
时间: 2024-10-25 22:05:20

字符串置换问题的相关文章

字符串置换

题: 解: 这道题比较简单,不知道是不是我理解错题意了. 我的思路是将两个字符串分割并保存到数组里面,再由数组保存到集合里面,最后对两个集合进行排序并判断相同索引下的字符是否相同. 代码: 1 package com.lintcode; 2 3 import java.util.ArrayList; 4 import java.util.Collections; 5 import java.util.List; 6 import java.util.Scanner; 7 8 /** 9 * 字符

211 字符串置换

原题网址:https://www.lintcode.com/problem/string-permutation/description 描述 给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换. 置换的意思是,通过改变顺序可以使得两个字符串相等. 您在真实的面试中是否遇到过这个题?  是 样例 "abc" 为 "cba" 的置换. "aabc" 不是 "abcc" 的置换. 标签 排列 字符串处理 思

字符串置换 python3

给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换. 置换的意思是,通过改变顺序可以使得两个字符串相等. 思路:将字符串排序后比较 class Solution: """ @param A: a string @param B: a string @return: a boolean """ def Permutation(self, A, B): # write your code here list1 = [ i fo

POJ 1026 Cipher(置换)

                                                               Cipher Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 19502   Accepted: 5239 Description Bob and Alice started to use a brand-new encoding scheme. Surprisingly it is not a P

批处理bat 命令

1.批处理常用符号: - echo 打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置 语法:@echo [{ on|off }]  echo{"显示信息"} - rem 注释命令,只是起一个注释的作用,便于别人阅读和你自己日后修改 - pause 暂停,将显示下面的消息:Press any key to continue . . . - call 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序 语法: call [Drive:][

批处理-整理

批处理中的特殊字符符号 批处理中的算术符号 批处理支持数值类型的表示,同样支持数值类型的运算处理,当然批处理比较弱智,只支持整数类型的数值的算术运算,不仅支持基本的数学算术运算,还支持高级的算术运算 dos命令说明 echo 和 @ 回显命令 @                     #关闭单行回显 echo off              #从下一行开始关闭回显 @echo off             #从本行开始关闭回显.一般批处理第一行都是这个 echo on          

cmd 概览---- 转

打开"运行"对话框(Win+R),输入cmd,打开控制台命令窗口... 也可以通过cmd /c 命令 和 cmd /k 命令的方式来直接运行命令 注:/c表示执行完命令后关闭cmd窗口:/k表示执行完命令后保留cmd窗口 # 控制台命令窗口中一些技巧 复制内容:右键弹出快捷菜单,选择"标记(K)",然后选中所需复制的内容,然后右键即可 粘贴内容:右键弹出快捷菜单,选择"粘贴(P)" 在文件夹空白处按住Shift,然后右键弹出快捷菜单,可以看到&q

BAT命令大全

BAT命令大全 1 echo 和 @ @                          #关闭单行回显 echo off                  #从下一行开始关闭回显 @echo off               #从本行开始关闭回显.一般批处理第一行都是这个 echo on                  #从下一行开始打开回显 echo                      #显示当前是 echo off 状态还是 echo on 状态 echo.          

Windows批处理(cmd/bat)常用命令小结

转载自:“趣IT”微信公共号 前言 批处理文件(batch file)包含一系列 DOS命令,通常用于自动执行重复性任务.用户只需双击批处理文件便可执行任务,而无需重复输入相同指令.编写批处理文件非常简单,但难点在于确保一切按顺序执行.编写严谨的批处理文件可以极大程度地节省时间,在应对重复性工作时尤其有效. 在Windows中善用批处理可以简化很多重复工作 什么是批处理 批处理(Batch),也称为批处理脚本.顾名思义,批处理就是对某对象进行批量的处理.批处理文件的扩展名为bat. 目前比较常见