字符串练习题(二):词语变形

对于两个字符串A和B,如果A和B中出现的字符种类相同且每种字符出现的次数相同,则A和B互为变形词,请设计一个高效算法,检查两给定串是否互为变形词。

给定两个字符串AB及他们的长度,请返回一个bool值,代表他们是否互为变形词。

测试样例:

"abc",3,"bca",3
返回:true
public class Transform {
    public boolean chkTransform(String A, int lena, String B, int lenb) {
        if(A == null || B == null || lena != lenb){
            return false;
        }

        char[] chas1 = A.toCharArray();
        char[] chas2 = B.toCharArray();
        int[] map = new int[256];
        for(int i = 0; i < chas1.length; i++){
            map[chas1[i]]++;
        }
        for(int i = 0; i < chas2.length; i++){
            if(map[chas2[i]]-- == 0){
                return false;
            }
        }
        return true;
    }
}
时间: 2024-08-01 10:43:11

字符串练习题(二):词语变形的相关文章

C++编程基础一 33-编程练习题二

1 // 33-编程练习题二.cpp: 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h" 5 #include <iostream> 6 #include <climits> 7 #include <array> 8 #include <math.h> 9 #include <string> 10 using namespace std; 11 12 enum CH 13 { 14 A,

用字符串生成二维码

需要导入Zxing.jar包 import android.graphics.Bitmap; import com.google.zxing.BarcodeFormat; import com.google.zxing.MultiFormatWriter; import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; public class ZxingCode { /** * 用字符串生成二

POJ 1080 Human Gene Functions(求两字符串相似度:LCS变形)

POJ 1080 Human Gene Functions(求两字符串相似度:LCS变形) http://poj.org/problem?id=1080 题意: HDU1080 给你两个由字符A,C,G,T构造的字符串s1和s2, 现在你可以在这两个字符串中插入空格, 使得两串长相等(但是不能使得s1的空格对应s2的空格位置). 然后给你s1的特定字符对应s2中特定字符所能获得的分数矩阵: 问你最后两个字符串所能获得的最大分数是多少? 分析: 本题很类似于求字符串最短编辑距离或者求字符串LCS的

python/MySQL练习题(二)

python/MySQL练习题(二) 21.查询各科成绩前三名的记录:(不考虑成绩并列情况) 1 select score.sid,score.course_id,score.num,T.first_num,T.second_num from score left join 2 ( 3 select 4 sid, 5 (select num from score as s2 where s2.course_id = s1.course_id order by num desc limit 0,1

格式化字符串(二)

格式化字符串(二) 直接使用字符串"."方法的方式格式化字符串. 加强了字符串原有的replace,也就是说,字符串的原有原生方法,用法不变. String.replace({JSON},|Boolean|?) 入门用法. 例如: var string = "{name}是一个实用的{type},包含很多有趣的功能.".replace({ name: "v2", type: "前端轻量级框架" }); console.log(

支付宝小程序开发——根据字符串生成二维码

支付宝小程序开发中,如果需要根据字符串生成二维码,那么可以直接使用qrcode插件,你无需引用js,直接使用开发者工具的npm功能就可以了. 一. 安装插件: 1.开发者工具左侧工具栏点击如图所示的图标(npm): 2.NPM包管理界面,输入框中输入 qrcode 并按回车键,等待插件安装完成: 二. 引用并使用插件: 1 //引用插件 2 const QRCode = require('qrcode'); 3 Page({ 4 data: { 5 imgSrc: '' 6 }, 7 onRea

字符串练习题

#region 练习一 //课上练习1:接收用户输入的字符串,将其中的字符以与输入相反的顺序输出."abc"→"cba" string str = "abcefg"; //思路:先将这个字符串转换成数组 char[] chs = str.ToCharArray(); //对数组进行反序 for (int i = 0; i < chs.Length / 2; i++) { char temp = chs[i]; chs[i] = chs[ch

C提高 3 字符串与二维指针

二维指针三种内存模型图: 统计字符串两头,非空字符的长度 #include <stdio.h>  #include <stdlib.h> #include <string.h> int main() { //统计字符串两头,非空字符的长度 char *p = "  abc   "; int i = 0; int j = strlen(p) - 1; int count = 0; while (isspace(p[i]) && p[i]

PHP字符串练习题

题目要求:将一个字符串1234567890转换成1,234,567,890 解法一:将这两个字符串倒序来看即将0987654321转换成098,765,432,1,那么可以将0987654321分割成每个单元是三个长度字符串的数组array(098,765,432,1),然后将数组和逗号结合成字符串,然后反转即可得到最终结果 $str='1234567890'; function change($str) { $str1=strrev($str); //先将字符串反转 $arr=str_spli