精华内容
下载资源
问答
  • 1.4 写一个函数判断两个字符串是否使用相同的字符构成。 实质是str2是不是由str1通过改变字符出现顺序所得到的; 解答: 本有两种解法 法1 排序法 分别将两个字符串进行排序,然后进行比较; return ...

    1.4 写一个函数判断两个字符串是否使用相同的字符构成。

    实质是str2是不是由str1通过改变字符出现顺序所得到的;

    解答:

    本题有两种解法

    法1 排序法

    分别将两个字符串进行排序,然后进行比较;


    return  sort(str1)==sort(str2);

    法2 计数法

    统计str1中出现的不重复字符进行计数以及总的个数,与str2进行比较。

    遍历str2,如果str2中出现不用的不重复字符,则返回假;同时统计str2中与str1对应的不重复字符的个数num_completed_str2, str1是出现新的字符,则计数器num_unique_chars加1,str2是出现了与str1中相对应字符相同的次数,则计数器num_completed_str2加1,若果num_completed_str2==num_unique_chars,则如果已经遍历完str2,则返回真,否则返回假。

     

    bool anagram(string str1,string str2)
    {
             int letters[256],c;
             memset(letters,0,256*sizeof(int));
        int num_unique_chars=0;//记录str1中不重复字符的个数
             int num_completed_str2=0; 
             for (string::iterator itr=str2.begin();itr!=str2.end();itr++)
             {
                      int c=(int)*itr;
                      if (letters[c]==0)
                      {
                              ++num_unique_chars;
                      }
                      letters[c]++;
             }
             for (int i=0;i<str1.length();i++)
             {
                      c=(int)str1[i];
                      if (0==letters[c])
                      {
                              return false;
                      }
                      --letters[c];
                      if (0==letters[c])// c在str2中出现次数与str1中相同
                      {
                              ++num_completed_str2;//记录受str2中不重复的字符个数
                              if (num_completed_str2==num_unique_chars)//str1与str2中不重复字符个数相同
                              {
                                       return i==str2.length()-1;//此时i已经遍历完str2,则返回真,否则,返回假
                              }
                      }
                     
        }
             return false;
    }

    展开全文
  • 判断两个二叉树的结构是否相同很简单。 采用递归的思想: (1)如果两棵二叉树都为空,返回真 (2)如果两棵二叉树一棵为空,另一棵不为空,返回假 (3)如果两棵二叉树都不为空,则递归判断其对应的左子树和...

    一、首先这个问题是判断二叉树的结构是否相同,所以这就和二叉树的数据的值无关。只需要判断结构;判断两个二叉树的结构是否相同很简单。
    采用递归的思想:
    (1)如果两棵二叉树都为空,返回真
    (2)如果两棵二叉树一棵为空,另一棵不为空,返回假
    (3)如果两棵二叉树都不为空,则递归判断其对应的左子树和右子树结构是否相同,如果都相同返回真,其他返回假
    二、代码实现

    #include<iostream>
    using namespace std;
    #include<assert.h>
    template<class T>
    struct TreeNode
    {
        TreeNode( const T& data=T())
            :_data(data)
            ,_left(NULL)
            ,_right(NULL)
        {}
        int _data;
        TreeNode<T>* _left;
        TreeNode<T>* _right;
    };
    
    template<class T>
    class BinaryTree 
    {
        typedef  TreeNode<T>  Node;
    public:
        BinaryTree()//无参构造函数
            :_root(NULL)
        {}
        BinaryTree(const T* arr,int sz,const T invalid)//有参构造函数
        {
            assert(arr);
            int index=0;//数组中的位置
            _root=BuildTree(arr,sz,invalid,index);
        }
        bool SameTree(BinaryTree<T>& b)
        {
            return _SameTree(_root,b._root);
        }
    protected:
        Node* BuildTree(const T* arr,int sz,const T invalid,int index)//前序建树
        {
                if (index<sz && arr[index]!=invalid)//没有走完数组,且不是非法值
                {
                    Node* root=new Node(arr[index]);
                    root->_left=BuildTree(arr,sz,invalid,++index);
                    root->_right=BuildTree(arr,sz,invalid,++index);
                    return root;
                }
                return NULL;
        }
        bool _SameTree(Node* root1,Node* root2)
        {
            if (root1==NULL&&root2==NULL)//两个树都为空,则结构相同
            {
                return true;
            }
            else  if (root1==NULL||root2==NULL)//一个为空一个不为空
            {
                return false;
            }
            else//两个都不为空
            {
                bool ret1=_SameTree(root1->_left,root2->_left);//检查左子树结构
                bool ret2=_SameTree(root1->_right,root2->_right);//检查有子树结构
                return (ret1&&ret2);//左右子树的结构必须都相同
            }
        }
    private:
        Node*  _root;
    };

    测试代码:

    void Test()
    {
        int arr1[] = {1, 2, 3, '#', '#', 4, '#' , '#', 5, 6};
        int sz1=sizeof(arr1)/sizeof(arr1[0]);
        BinaryTree<int>  bt1(arr1,sz1,'#');//调用带有参数的构造函数
    
        int arr2[] = {1,2,'#',3,'#','#',4,5,'#',6,'#',7,'#','#',8};
        int sz2=sizeof(arr2)/sizeof(arr2[0]);
        BinaryTree<int>  bt2(arr2,sz2,'#');//调用带有参数的构造函数
        cout<<"bt1和bt2结构是否相同:"<<bt1.SameTree(bt2)<<endl;
    
        int arr3[] = {1, 2, 3, '#', '#', 4, '#' , '#', 5, 6};
        int sz3=sizeof(arr3)/sizeof(arr3[0]);
        BinaryTree<int>  bt3(arr3,sz3,'#');//调用带有参数的构造函数
        cout<<"bt1和bt3结构是否相同:"<<bt1.SameTree(bt3)<<endl;
    
    
    }
    int main()
    {   
        Test();
        return 0;
    }

    三、运行结果
    这里写图片描述

    O(∩_∩)O

    展开全文
  • LeetCode第349(编写一个函数来计算它们的交集) 349 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2] public static int[] intersection(int[] nums1, ...

    LeetCode第349题(编写一个函数来计算它们的交集)

    349 给定两个数组,编写一个函数来计算它们的交集。

    示例 1:
    输入: nums1 = [1,2,2,1], nums2 = [2,2]
    输出: [2]

    public static int[] intersection(int[] nums1, int[] nums2) {
            if(nums1.length == 0){
                return nums1;
            }
            if (nums2.length == 0){
                return nums2;
            }
            //利用Set不可以有重复的元素特性
            Set<Integer> set = new HashSet<>();
            Set<Integer> list = new HashSet<>();
            //先将其中一个数组添加至集合中
            for (int i : nums1) {
                set.add(i);
            }
            //遍历第二个数组
            for (int i : nums2) {
                if (set.contains(i)){
                   list.add(i);
                }
            }
            int[] temp = new int[list.size()];
            int i = 0;
            for (Integer integer : list) {
                temp[i++] = integer;
            }
            return temp;
        }
    
    public static void main(String[] args) {
            int[] nums1 ={4,7,9,7,6,7};
            int[] nums2 ={5,0,0,6,1,6,2,2,4};
    
            int[] a =intersection(nums1,nums2);
    
            for (int i : a) {
                System.out.print(i+" ");
            }
    
        }
    
    
    

    方法验证通过,用时7ms,方法比较笨拙,仅做记录。

    展开全文
  • 6-7 统计某类完全平方数 (20 分)本要求实现一个函数判断任一给定整数N是否满足条件:它是完全平方数,又至少有位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N ); 裁判测试程序...

    6-7 统计某类完全平方数 (20 分)本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。

    函数接口定义:

    int IsTheNumber ( const int N );

    裁判测试程序样例:

    #include <stdio.h>
    #include <math.h>
    int IsTheNumber ( const int N );
    int main()
    {
    int n1, n2, i, cnt;
    scanf("%d %d", &n1, &n2);
    cnt = 0;
    for ( i=n1; i<=n2; i++ ) {
    if ( IsTheNumber(i) )
    cnt++;
    }
    printf(“cnt = %d\n”, cnt);
    return 0;
    }
    /* 你的代码将被嵌在这里 */

    输入样例:

    105 500

    输出样例:

    cnt = 6

    int IsTheNumber ( const int N ){
      int n=N;
      int b;
      int p[10]={0};
      int m=sqrt(n);
      if(m*m==n){
        while(n){
          b=n%10;
          p[b]++;
          n/=10;
        }
        for(int i=0;i<=9;i++){
          if(p[i]>1)
          return 1;
        }
      }
      return 0;
    }
    展开全文
  • 习题 4.1 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用两个函数,并输出结果,两个整数由键盘输入。 代码块: #include &lt;iostream&gt; using namespace std; int HCF(int x, ...
  • 要求实现一个函数判断任一给定整数N是否满足条件:它是完全平方数,又至少有位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N ); 其中N是用户传入的参数。如果N满足条件,则该...
  • 题目:实现一个函数,这个函数可以用来判断输入字符串是否为回文。忽略大小写,如Helleh,王中王等。首先解这的首要问题是理解回文这个概念,回文的定义是把相同的词汇或句子,在下文中调换位置或颠倒过来,产生...
  • 题目:判断两个字符串是否相同字符组成,由相同字符组成的条件是:长度相同,且所含的字符个数相同,eg:s1 = ”adfgg“;s2 = ”gfdga“ ,我们称s1和s2是匹配的。 /* 法一:假设全为ASCII码,则字符的范围为0-...
  • 其中函数even将根据用户传入...函数OddSum负责计算并返回传入的N整数List[]中所有奇数的和. #include <stdio.h> #define MAXN 10 int even( int n ); int OddSum( int List[], int N ); int main() { i...
  • 函数接口定义:2.裁判测试程序样例:3. 输入样例:4.输出样例:5.代码如下: 1.函数接口定义: int IsTheNumber ( const int N ); 其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。 2.裁判...
  • #include <stdio.h> int main() { void fun(int x); int a; printf("请输入任一整数:\n"); scanf("%d",&a); fun(a); return 0; } void fun(int x) { int i; if(x<=1) printf("%d不是素数\n...i
  • JS判断两个对象内容是否相等的方法示例及开发面试汇总(图): 这篇文章主要介绍了JS判断两个对象内容是否相等的方法,结合具体实例形式分析了javascript针对字符串、数组及对象的相关判断技巧,需要的朋友可以参考...
  • 题目:判断两个数组中是否相同的元素,有就输出“有”,没有就输出“没有”。解法一:用第一个数组中的所有元素与第二个数组中的所有元素相比较,若有相同元素,则停止寻找并输出“有”;若比较完所有的数后都没有...
  • 要求实现一个函数判断任一给定整数N是否满足条件:它是完全平方数,又至少有位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N ); 其中N是用户传入的参数。如果N满足条件,则...
  • 要求对两个整数a和b,输出其中较大的数。 函数接口定义: int max( int a, int b ); 其中a和b是用户传入的参数,函数返回的是两者中较大的数。 裁判测试程序样例: #include &lt;stdio.h&gt; ...
  • 判断两个矩形是否重叠

    万次阅读 多人点赞 2016-01-08 16:47:00
    判断两个矩形是否重叠关于如何判断两个矩形重叠,这是我在实际项目开发当中曾经遇到过的问题:“判断图像中检测到的两个人脸框矩形是否有重叠部分,并计算重叠大小,从而确认是否为同一个人脸”。后来,在浏览博客时...
  • 此程序中,实现用递归构造二叉排序树,以前递归一直构造不成功,仔细看看书,发现是函数传送参数的时候,不能传送指向结点的指针,若这样只能改变此指针指向内容,而无法改变此指针,但是递归构造时,当函数接受的...
  • 如果想知道构造函数被实例化了多少次,最常用的方法如下:// ...}表面上看起来没有问题,其实会产生两个缺陷: 1. 此函数被只是作为函数调用,而不是作为构造函数; 2. count暴露在外,容易被无意修改改进方法如下:/
  • 判断两个矩阵是否重叠

    千次阅读 2017-07-20 16:04:29
    判断两个矩阵是否重叠 关于如何判断两个矩阵是否重叠,这是我在实际项目开发当中曾经遇到过的问题:“判断图像中检测到的两个人脸框矩形是否有重叠部分,并计算重叠大小,从而确认是否为同一个人脸”。后来,在浏览...
  • 问题:给定两个矩形A和B,矩形A的左上角坐标为(Xa1,Ya1),右下角坐标为(Xa2,Ya2),矩形B的左上角坐标为...(a)设计一个算法,确定两个矩形是否相交(即有重叠区域) (b)如果两个矩形相交,设计一个算法,求...
  • 这道实际上是一道面试的拓展,原是要求打印1到最大的n位数。原是这样描述的:输入数字n,按顺序打印出1到最大的n位十进制数。比如输入3,则打印出1,2,3,4,5一直到最大的三位数999。拿到这道之后,对于没有...
  • 要求实现一个函数,计算N个整数中所有奇数的和,同时实现一个判断奇偶性的函数。 函数接口定义: int even( int n ); int OddSum( int List[], int N ); 其中函数even将根据用户传入的参数n的奇偶性返回...
  • 一个高中哥们,拜托我帮他写程序,鉴于他面临的挂科的风险,又加上他老师教的也不是很好。就重操旧业,来了段C++。今天发这个博客主要是把代码...看了一会懂了,从DOS界面让用户输入俩字符串,字符串内是数字,两个...
  • 写一个函数判断两个字符串是否是变位词。解答变位词(anagrams)指的是组成两个单词的字符相同,但位置不同的单词。比如说, abbcd和abcdb就是一对变位词。 也就是说,2个字符串,不管排列顺序如何,只要全部的单个...
  • 判断两个单链表是否相交及找到第一个交点

    万次阅读 多人点赞 2017-12-24 16:45:48
    题目:给两个单链表,如何判断两个单链表是否相交?若相交,则找出第一个相交的节点。 这道的思路和解法有很多,在这把这道的解法做一个详细的总结。解这道之前,我们需要首先明确一个概念: 如果两个单链表...
  • 判断两个二叉树是否互为镜像+力扣扩展:翻转等价二叉树
  • (1)质数p的约数只有两个:1和p。 (2)初等数学基本定理:任一大于1的自然数,要么本身是质数,要么可以分解为几个质数之积,且这种分解是唯一的。 (3)质数的个数是无限的。 (4)质数的个数公式 是不减函数。 ...
  • 函数调用C语言基础习题

    千次阅读 2019-11-30 20:17:56
    做了一些关于函数的C语言习题.大多还是把以前的一些程序改了改,练习函数的调用,在以后的编程中要多用函数的调用,让main函数看...3.实现一个函数判断year是不是闰年 4.实现一个函数判断一个数是不是素数。 程序...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 198,888
精华内容 79,555
关键字:

判断两个函数是否相同的题