算法题:确定两串乱序同构

题目描述

给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。

给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同。保证两串的长度都小于等于5000。

测试样例:

“This is nowcoder”,”is This nowcoder”

返回:true

“Here you are”,”Are you here”

返回:false

#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
bool IsSample(char *str1,char *str2)
{
    if (strlen(str1) != strlen(str2))return false;

    int strdata1[256] = {0};
    int strdata2[256] = {0};
    char *p = str1;
    char buff[32] = {0};
    while (*p != ‘\0‘)
    {
        strdata1[*p]++;
        buff[*p >> 3] |= (0x1 << (*p & 0x7));
        //此处可以用bitset来实现,判断字符的存在性。
        p++;
    }
    p = str2;
    while (*p != ‘\0‘)
        strdata2[*p++]++;
    /////////////////////////////////
    //开始判断。
    int i = 0;
    for (i = 0; i < 32; i++)
    {
        for (int j = 0; j < 8; j++)
        {
            if ((buff[i] & (0x1 << j)) !=0)
            {
                if (strdata1[i * 8 + j] == strdata2[i * 8 + j])
                {
                    continue;
                }
                else return false;
            }
        }
    }
    if (i == 32)return true;

}
int main()
{
    char s1[] = "eeebbb";
    char s2[] = "eeb0bb";
    cout << IsSample(s1, s2) << endl;
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-09 08:07:08

算法题:确定两串乱序同构的相关文章

算法题——确定两串乱序同构

欢迎转载,请附出处: http://blog.csdn.net/as02446418/article/details/47145467 给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串.这里规定大小写为不同字符,且考虑字符串重点空格. 给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同.保证两串的长度都小于等于5000. 测试样例: "This is nowcoder","

1.3确定两串乱序同构

题目描述 给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串.这里规定大小写为不同字符,且考虑字符串中有空格. 给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同.保证两串的长度都小于等于5000. 测试样例: "This is nowcoder","is This nowcoder" 返回:true "Here you are","

确定两串乱序同构

来源:http://www.nowcoder.com/questionTerminal/164929d4acd04de5b0ee2d93047b3b20 题目描述给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串.这里规定大小写为不同字符,且考虑字符串重点空格.给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同.保证两串的长度都小于等于5000.测试样例:"This is nowcoder&q

1.3字符串 确定两串乱序同构

方法1 1 class Same { 2 public: 3 bool checkSam(string stringA, string stringB) { 4 // write code here 5 if(stringA.size()!=stringB.size()) 6 return false; 7 sort(stringA.begin(),stringA.end()); 8 sort(stringB.begin(),stringB.end()); 9 return stringA==s

算法题——合并两条有序的链表

题目:给定两个已排序的链表,返回合并后的链表. 思路:将链表L2的每个结点插入到链表L1中,时间复杂度为O(m+n),m.n分别为两条链表的长度. 代码: 1 struct ListNode 2 { 3 int value; 4 ListNode *next; 5 ListNode(int v): value(v), next(NULL) 6 { 7 } 8 }; 9 10 ListNode *mergeSortedList(ListNode *L1, ListNode *L2) 11 { 12

【3】确定两串乱序

[题目] 给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串.这里规定大小写为不同字符,且考虑字符串重点空格. 给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同.保证两串的长度都小于等于5000. [代码实现] 方法一:对字符排序比较 import java.util.*; public class Same { public boolean checkSam(String stringA,

美图笔试算法题(两个人拿石头判断输赢)

刚做完美图的笔试,两道编程题,第一道比较简单:找出一串用逗号隔开的字符串中不重复的那个数. 以下是第二道,时间有限,很多地方没来得及优化,整体逻辑应该没错. question: You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stones. The one

leetcode算法题1: 两个二进制数有多少位不相同?异或、位移、与运算的主场

/*The Hamming distance between two integers is the number of positions at which the corresponding bits are different. Given two integers x and y, calculate the Hamming distance. Note:0 ≤ x, y < 231. Example: Input: x = 1, y = 4 Output: 2 Explanation:

FCC 中级算法题 比较两个数组

Diff Two Arrays 比较两个数组,然后返回一个新数组,该数组的元素为两个给定数组中所有独有的数组元素.言之,返回两个数组的差异. ComparisonOperators Array.slice() Array.filter() Array.indexOf() Array.concat() 思路: 先找出arr1中与arr2不同的部分组成新数组1,再找出arr2中与arr1不同的部分组成新数组2,在将这两个数组合并,得出两个数组不同的部分. 知识点: (1)var newArr=arr