我们得到一个长度相同的字符串数组。目标是找到未按递增顺序排序的列(字符串矩阵)。例如,将字符串中的每个第一个字符与下一个字符串的第一个字符进行比较,以此类推,直到最后一个字符串。如果它们不是按递增顺序排列的,请增加计数。对所有第二个字符执行此操作,然后是所有字符串的第三个字符,依此类推,直到最后一个字符。
Arr[]= { “abc”, “bcd”, “def” }输出结果
Count of columns: 0
说明- 对于每一列,
第 1 列:索引 0 处的字符:a<b<d
第 2 列:索引 1 处的字符:b<c<e
第 3 列:索引 2 处的字符:c<d<f
列中所有对应的字符按升序排列。
Arr[]= { “dbd”, “faf”, “eeg” }输出结果
Count of columns: 2
说明- 对于每一列,
第 1 列 - 索引 0 处的字符:d<f>g
第 2 列 - 索引 1 处的字符:b>a<e
第 3 列 - 索引 2 处的字符:d<f<g
第 1 列和第 2 列的字符没有递增顺序。计数=2
字符数组 arr[][] 用于存储相同长度的字符串。
函数 countCols(char str[3][4],int n,int len) 接受一个字符串数组,没有。其中的字符串和每个字符串的长度作为输入,并返回不按递增顺序排列的列数。
用 0 初始化计数。
Col 用于表示当前列。(所有字符串的公共索引)。
使用 for 循环从第一个索引开始同时遍历每个字符串,直到字符串的长度(所有字符串的长度相同)。
这里每个字符串有 3 个字符,所以我们比较 str[col][j]>str[col+1][j-1] || str[col+1][j]>str[col+2][j-1]。如果任何条件为真,则增加计数。
在 for 循环结束后返回 count 中存在的结果。
#include <bits/stdc++.h> using namespace std; int countCols(char str[3][4],int n,int len){ int i,j; int count=0; int col=0; for(j=0;j<len;j++){ if(str[col][j]>str[col+1][j-1] || str[col+1][j]>str[col+2][j-1] ) count++; } return count; } int main(){ char arr[3][4]={"abc", "daf", "ghi"}; cout<<"\nColumns that are not sorted:"<<countCols(arr,3,3); return 0; }输出结果
Columns that are not sorted:2