目录
示例
说明
方法:使用Hashmap
输出
结论
首页 后端开发 C++ 将给定的字符串转换为T,通过任意次数替换字符串之间的字符

将给定的字符串转换为T,通过任意次数替换字符串之间的字符

Sep 10, 2023 pm 04:25 PM
字符串 替换 转换

将给定的字符串转换为T,通过任意次数替换字符串之间的字符

转换字符串意味着我们必须根据给定条件将其与给定字符串相同。在这个问题中,我们给出了一个由字符串“arr”和大小为“M”的字符串“T”组成的数组。我们的任务是检查是否可以通过从数组的字符串( arr[i] )中删除任何字符并将该字符插入到另一个字符串的任何索引中来使数组中存在的所有字符串与给定的字符串 T 相同数组的字符串 ( arr[j] )。我们可以这样做任意多次。如果可以使数组中的所有字符串与字符串‘T’相同,则返回“YES”,否则返回“NO”。

示例

Input 1: arr = [ “wxyz”, “wxxy”, “wyzz” ], T = “wxyz”
登录后复制
Output 1: YES
登录后复制

说明

使数组中的所有字符串与字符串 T 相同的可能方法之一如下 -

  • 删除索引 2 处字符串 arr[1] (“wxxy”) 的字符,并将其插入到索引 1 处字符串 arr[2] (“wyzz”) 处。然后它看起来像: [ “ wxyz”、“wxy”、“wxyzz”]

  • 删除索引 3 处字符串 arr[2] (“wxyzz”) 的字符并将其插入到索引 3 处字符串 arr[1] (“wxy”) 处。然后它看起来像: [ “ wxyz”、“wxyz”、“wxyz”]。

执行上述步骤后,我们可以使数组中的所有字符串都与字符串T相同。因此答案是“YES”。

Input 2: arr = [ “rts”, “rtw”, “rts” ], T = “rts”
登录后复制
Output 2: NO
登录后复制

说明

数组中存在 3 个字符串,其中 2 个与字符串 T 相同,但索引号为 1 的字符串不相同。它包含不属于字符串T的不同字符。不可能使数组中的所有字符串都成为字符串T。因此,答案为“NO”。

方法:使用Hashmap

我们已经看到了上面给定字符串的示例,让我们转向该方法 -

我们有两个观察结果如下 -

  • 因为我们必须让数组中的所有字符串都与字符串T相同,这样数组中每个字符串的所有字符都必须出现在字符串T中。换句话说,不存在不同的字符。否则,我们无法满足条件。

  • 当我们计算完数组中所有字符串的字符出现频率后,每个字符的出现频率必须等于数组“N”的大小。

    < /里>

根据上述观察,我们有两个条件需要检查。

  • 数组“freqArr”大小的字符串的哈希映射等于字符串“T”的哈希映射“freqT”。作为

freqArr.size() == freqT.size()
登录后复制
  • 字符串 T 的每个字符都应该出现在数组的每个字符串中。字符串 T 的每个字符在数组字符串中的频率计数应为“N”。作为-

freqArr.find(T[i]) == freqArr.end() and 
freqArr[T[i]] != freqT[T[i]]*N.
登录后复制

我们可以使用哈希来解决这个问题,因为我们需要计算数组 string 和字符串 T 中字符的频率。

示例

让我们看看上述方法的代码以便更好地理解 -

// Program to convert all strings to T
#include <bits/stdc++.h>
using namespace std;
string covertStringIntoT( int N, string arr[], string T){
   map< char,int > freqT; //to store the frequency of each character of string T
   int len = T.size(); //getting the size of the string T 
   
   //traverse the string T to store the frequency of the characters
   for( int i=0; i<len; i++){
      freqT[T[i]]++;
   }
   map< char,int > freqArr; //to store the frequency of each chracter of strings 
   
   // of Array.
   //traverse the strings of Array to store the frequency of the characters
   for( int i=0; i<N; i++){
      for(int j=0;j<arr[i].size(); j++){
         freqArr[arr[i][j]]++;
      }
   }
   
   // Check the condition one
   if(freqT.size() != freqArr.size()){
      return "NO";
   }    
   
   //check condition two while trversing the string T
   for( int i=0; i<len; i++){
      if(freqArr.find(T[i]) == freqArr.end() || freqArr[T[i]] != freqT[T[i]]*N ){
         return "NO";
      }
   }
   return "YES";
}
int main() {    
   string T = "wxyz"; // given string
   string arr[] = {"wxyz", "wxyy", "wxzz"}; // given array of strings
   int N = sizeof(arr) / sizeof(arr[0]); //getting the size of the array of string 
   
   // calling the function 'convertStringIntoT' to convert all strings of the 
   
   // array into string T
   string result = covertStringIntoT( N, arr, T);
   if(result == "YES"){
      cout<< result << ", it is possible to make all the strings of the array as string T";
   }
   else{
      cout<< result << ", it is not possible to make all the strings of the array as string T"; 
   }
   return 0;
}
登录后复制

输出

YES, it is possible to make all the strings of the array as string T
登录后复制

时间和空间复杂度

上述代码的时间复杂度为O(M + N*L)

上述代码的空间复杂度为O(M)

其中 M 是字符串 T 的大小,N 是数组的大小,L 是数组中存在的最长字符串。

结论

在本教程中,我们实现了一个程序,通过任意多次替换字符串之间的字符,将给定的字符串转换为 T。我们实施了一种散列方法,因为我们必须存储频率。在这种方法中,我们主要检查两个条件,如果所有条件都满足,则意味着我们能够将数组中的所有字符串转换为与字符串 T 相同的字符串。

以上是将给定的字符串转换为T,通过任意次数替换字符串之间的字符的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1663
14
CakePHP 教程
1420
52
Laravel 教程
1313
25
PHP教程
1266
29
C# 教程
1239
24
全角英文字母转换为半角形式的实用技巧 全角英文字母转换为半角形式的实用技巧 Mar 26, 2024 am 09:54 AM

全角英文字母转换为半角形式的实用技巧在现代生活中,我们经常会接触到英文字母,在使用电脑、手机等设备时也经常需要输入英文字母。然而,有时候我们会遇到全角英文字母的情况,而我们需要使用的是半角形式。那么,如何将全角英文字母转换为半角形式呢?下面就为大家介绍一些实用的技巧。首先,全角英文字母和数字是指在输入法中占据一个全角位置的字符,而半角英文字母和数字则是占据一

PHP 月份转换为英文月份的实现方法详解 PHP 月份转换为英文月份的实现方法详解 Mar 21, 2024 pm 06:45 PM

这篇文章将详细介绍如何将PHP中的月份转换为英文月份的方法,同时给出具体的代码示例。在PHP开发中,有时候我们需要将数字表示的月份转换为英文的月份,这在一些日期处理或数据展示的场景下非常实用。下面将从实现原理、具体代码示例和注意事项等方面进行详解。一、实现原理在PHP中,可以通过使用DateTime类和format方法来实现将数字月份转换为英文月份。Date

PHP中int类型转字符串的方法详解 PHP中int类型转字符串的方法详解 Mar 26, 2024 am 11:45 AM

PHP中int类型转字符串的方法详解在PHP开发中,经常会遇到将int类型转换为字符串类型的需求。这种转换可以通过多种方式实现,本文将详细介绍几种常用的方法,并附带具体的代码示例来帮助读者更好地理解。一、使用PHP内置函数strval()PHP提供了一个内置函数strval(),可以将不同类型的变量转换为字符串类型。当我们需要将int类型转换为字符串类型时,

python怎么重复字符串_python重复字符串教程 python怎么重复字符串_python重复字符串教程 Apr 02, 2024 pm 03:58 PM

1、首先打开pycharm,进入到pycharm主页。2、然后新建python脚本,右键--点击new--点击pythonfile。3、输入一段字符串,代码:s="-"。4、接着需要把字符串里面的符号重复20次,代码:s1=s*20。5、输入打印输出代码,代码:print(s1)。6、最后运行脚本,在最底部会看到我们的返回值:-就重复了20次。

全角英文字母变为半角字母的方法 全角英文字母变为半角字母的方法 Mar 25, 2024 pm 02:45 PM

全角英文字母变为半角字母的方法在日常生活和工作中,有时候我们会遇到需要将全角英文字母转换为半角字母的情况,比如在输入电脑密码、编辑文档或者设计排版时。全角英文字母和数字是指宽度与中文字符相同的字符,而半角英文字母则是指宽度较窄的字符。在实际操作中,我们需要掌握一些简单的方法,来将全角英文字母转换为半角字母,以便更方便地处理文本和数字。一、全角英文字母与半角英

qq音乐怎么转换mp3格式 手机上qq音乐转mp3格式 qq音乐怎么转换mp3格式 手机上qq音乐转mp3格式 Mar 21, 2024 pm 01:21 PM

  qq音乐让大家尽情享受观影解闷,每天都可以使用这个软件,轻松满足自己的使用,优质海量的歌曲,任由大家畅听,也可以下载保存起来,下次听的时候,不需要网络,而在这里下载的歌曲不是MP3格式的,无法在其他平台使用,会员歌曲过期后也没有办法再听了,所以很多小伙伴们,都想要将歌曲转换成MP3格式的,在这里小编为你们提供方法,帮助大家都可以使用起来!  1、打开电脑qq音乐,点击右上角【主菜单】按钮,点击【音频转码】,选择【添加歌曲】选项,添加需要转换的歌曲;  2、添加歌曲完毕,点击选择转换为【mp3

PHP教程:如何将int类型转换为字符串 PHP教程:如何将int类型转换为字符串 Mar 27, 2024 pm 06:03 PM

PHP教程:如何将int类型转换为字符串在PHP中,将整型数据转换为字符串是一种常见的操作。本教程将介绍如何使用PHP内置的函数将int类型转换为字符串,同时提供具体的代码示例。使用强制类型转换:在PHP中,可以使用强制类型转换的方式将整型数据转换为字符串。这种方法非常简单,只需要在整型数据前加上(string)即可将其转换为字符串。下面是一个简单的示例代码

全角英文字母转换为半角字母的简单教程 全角英文字母转换为半角字母的简单教程 Mar 25, 2024 pm 09:21 PM

在使用电脑输入英文时,有时候我们会遇到全角英文字母和半角英文字母的区别。全角英文字母是指在输入法为中文模式下,按下Shift键和英文字母键组合输入的字符,它们占据一个全角字符宽度。而半角英文字母则是指在输入法为英文模式下直接输入的字符,它们占据半个字符宽度。在某些情况下,我们可能需要将全角英文字母转换为半角字母,下面是一个简单的教程:首先,打开文本编辑器或任

See all articles