• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

啊远

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

《程序员面试金典》确定两串乱序同构

1、题目描述

  给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同。保证两串的长度都小于等于5000。

测试样例:
"This is nowcoder","is This nowcoder"
返回:true
 
"Here you are","Are you here"
返回:false

2、代码实现
 1 import java.util.*;
 2 
 3 public class Same {
 4     public boolean checkSam(String stringA, String stringB) {
 5 
 6         // 先判断大小是否相同,不同则直接返回false。
 7         if(stringA.length() != stringB.length()){
 8             return false;
 9         }
10         
11         // 相同,则使用两个大小为256的散列表,通过一次遍历找到每一个字符出现的次数
12         char a[] = new char[256];
13         char b[] = new char[256];
14         for(int i = 0; i < stringA.length(); i++){
15             a[stringA.charAt(i)]++;
16             b[stringB.charAt(i)]++;
17         }
18         
19         // 再遍历hashTable来判断每一个字符出现的次数是否相同。一旦某个字符出现不同次数,直接返回false  全部相同返回true
20         for(int j = 0; j < 256; j++){
21             if(a[j] != b[j]){
22                 return false;
23             }
24         }
25         
26         return true;
27     }
28     
29     public static void main(String[] args) {
30         Same same = new Same();
31         System.out.println(same.checkSam("Here you are", "are you Here"));
32     }
33 }

 

 

posted on 2016-10-15 21:04  啊远  阅读(218)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3