Find and return index of given String in a Multidimensional Array
Last Updated :
26 Sep, 2023
Given a multidimensional array stringArr of strings and a keyString to be found, the task is to return the coordinates/indexes of that key string in the array.
Example:
Input: stringArr[][] = { { "a", "h", "b"}, {"c", "d", "e"}, {"g", "t", "r"} }, keyString = "e"
Output = {1, 2}
Explanation: Following the 0-based indexing the keyString is present at (1, 2) in the multidimensional array.
Approach: Follow the steps to find the coordinates/indexes of a string in a multidimensional array:
- Firstly, iterate over all the elements in the array as checking each element in first row, then second row and so on.
- Then if the keyString is found in the array, simply return the indexes
- else just return -1 as the indices.
Below is the implementation of the above approach:
C++
// CPP Program to return indices of a given
// string from the multidimensional array
#include <bits/stdc++.h>
using namespace std;
// Method to return an array of indices
// of keyString
vector<int> findIndex(vector<vector<string> > stringArr,
string keyString)
{
// Initialising result array to -1
// in case keyString is not found
vector<int> result{ -1, -1 };
// Iteration over all the elements
// of the 2-D array
// Rows
for (int i = 0; i < stringArr.size(); i++) {
// Columns
for (int j = 0; j < stringArr[i].size(); j++) {
// If keyString is found
if (stringArr[i][j] == keyString) {
result[0] = i;
result[1] = j;
return result;
}
}
}
// If keyString is not found
// then -1 is returned
return result;
}
// Driver Code
int main()
{
// Given string array
vector<vector<string> > stringArr{ { "a", "h", "b" },
{ "c", "d", "e" },
{ "g", "t", "r" } };
// Given key String to be found
string keyString = "e";
// Calling the method which
// returns an array of indices
vector<int> result = findIndex(stringArr, keyString);
// Printing the indices returned
cout << "The indices are: ";
for (int i = 0; i < result.size(); i++) {
cout << result[i] << " ";
}
}
Java
// Java Program to return indices of a given string
// from the multidimensional string array
public class Main {
// method to return an array of indices of keyString
public static int[] findIndex(String stringArr[][],
String keyString)
{
// initialising result array to -1 in case keyString
// is not found
int result[] = { -1, -1 };
// iteration over all the elements of the 2-D array
// rows
for (int i = 0; i < stringArr.length; i++) {
// columns
for (int j = 0; j < stringArr[i].length; j++) {
// if keyString is found
if (stringArr[i][j].equals(keyString)) {
result[0] = i;
result[1] = j;
return result;
}
}
}
// if keyString is not found then -1 is returned
return result;
}
// Driver Code
public static void main(String args[])
{
// given string array
String[][] stringArr = { { "a", "h", "b" },
{ "c", "d", "e" },
{ "g", "t", "r" } };
// given key String to be found
String keyString = "e";
// calling the method which returns an array of
// indices
int[] result = findIndex(stringArr, keyString);
// printing the indices returned
System.out.print("The indices are:- ");
for (int i = 0; i < result.length; i++) {
System.out.print(result[i] + " ");
}
}
}
Python3
# Python Program to return indices of a given
# string from the multidimensional array
# Method to return an array of indices
# of keyString
def findIndex(stringArr, keyString):
# Initialising result array to -1
# in case keyString is not found
result = []
# Iteration over all the elements
# of the 2-D array
# Rows
for i in range(len(stringArr)):
# Columns
for j in range(len(stringArr[i])):
# If keyString is found
if stringArr[i][j] == keyString:
result.append(i)
result.append(j)
return result
result.append(-1)
result.append(-1)
# If keyString is not found
# then -1 is returned
return result
# Driver Code
# Given string array
stringArr = [["a", "h", "b"],
["c", "d", "e"],
["g", "t", "r"]]
# Given key String to be found
keyString = "e"
# Calling the method which
# returns an array of indices
result = findIndex(stringArr, keyString)
# Printing the indices returned
print("The indices are:", result[0], result[1])
# This code has been contributed by Sachin Sahara (sachin801)
C#
// C# Program to return indices of a given string
// from the multidimensional string array
using System;
public class GFG
{
// method to return an array of indices of keyString
public static int[] findIndex(string [,] stringArr,
string keyString)
{
// initialising result array to -1 in case keyString
// is not found
int []result = { -1, -1 };
// iteration over all the elements of the 2-D array
// rows
for (int i = 0; i < stringArr.Length; i++)
{
// columns
for (int j = 0; j < stringArr.GetLength(0); j++)
{
// if keyString is found
if (stringArr[i,j].Equals(keyString)) {
result[0] = i;
result[1] = j;
return result;
}
}
}
// if keyString is not found then -1 is returned
return result;
}
// Driver Code
public static void Main(string []args)
{
// given string array
string[,] stringArr = { { "a", "h", "b" },
{ "c", "d", "e" },
{ "g", "t", "r" } };
// given key String to be found
string keyString = "e";
// calling the method which returns an array of
// indices
int[] result = findIndex(stringArr, keyString);
// printing the indices returned
Console.Write("The indices are:- ");
for (int i = 0; i < result.Length; i++) {
Console.Write(result[i] + " ");
}
}
}
// This code is contributed by AnkThon
JavaScript
<script>
// JavaScript Program to return indices of a given
// string from the multidimensional array
// Method to return an array of indices
// of keyString
function findIndex(stringArr,keyString)
{
// Initialising result array to -1
// in case keyString is not found
let result = [ -1, -1 ];
// Iteration over all the elements
// of the 2-D array
// Rows
for (let i = 0; i < stringArr.length; i++) {
// Columns
for (let j = 0; j < stringArr[i].length; j++) {
// If keyString is found
if (stringArr[i][j] == keyString) {
result[0] = i;
result[1] = j;
return result;
}
}
}
// If keyString is not found
// then -1 is returned
return result;
}
// Driver Code
// Given string array
let stringArr = [[ "a", "h", "b" ],
[ "c", "d", "e" ],
[ "g", "t", "r" ]];
// Given key String to be found
let keyString = "e";
// Calling the method which
// returns an array of indices
let result = findIndex(stringArr, keyString);
// Printing the indices returned
document.write("The indices are: ");
for (let i = 0; i < result.length; i++) {
document.write(result[i]," ");
}
// This code is contributed by shinjanpatra
</script>
OutputThe indices are: 1 2
Time Complexity: O(N2)
Auxiliary Space: O(1)
Approach:
C++
#include <bits/stdc++.h>
using namespace std;
pair<int, int>
findIndex(const vector<vector<string> >& stringArr,
const string& keyString)
{
vector<string> flattenedArr;
for (const auto& row : stringArr) {
flattenedArr.insert(flattenedArr.end(), row.begin(),
row.end());
}
auto it = find(flattenedArr.begin(), flattenedArr.end(),
keyString);
if (it != flattenedArr.end()) {
int index = distance(flattenedArr.begin(), it);
int rows = stringArr.size();
int cols = stringArr[0].size();
return { index / cols, index % cols };
}
return { -1, -1 };
}
int main()
{
std::vector<std::vector<std::string> > stringArr{
{ "a", "h", "b" },
{ "c", "d", "e" },
{ "g", "t", "r" }
};
string keyString = "e";
pair<int, int> result = findIndex(stringArr, keyString);
cout << "The indices are: " << result.first << ", "
<< result.second << endl;
return 0;
}
Java
import java.util.ArrayList;
import java.util.List;
public class Program {
public static class Tuple<X, Y> {
public final X x;
public final Y y;
public Tuple(X x, Y y) {
this.x = x;
this.y = y;
}
}
public static Tuple<Integer, Integer> findIndex(List<List<String>> stringArr, String keyString) {
List<String> flattenedArr = new ArrayList<>();
for (List<String> row : stringArr) {
flattenedArr.addAll(row);
}
int index = flattenedArr.indexOf(keyString);
if (index != -1) {
int rows = stringArr.size();
int cols = stringArr.get(0).size();
return new Tuple<>(index / cols, index % cols);
}
return new Tuple<>(-1, -1);
}
public static void main(String[] args) {
List<List<String>> stringArr = new ArrayList<>();
stringArr.add(new ArrayList<>(List.of("a", "h", "b")));
stringArr.add(new ArrayList<>(List.of("c", "d", "e")));
stringArr.add(new ArrayList<>(List.of("g", "t", "r")));
String keyString = "e";
Tuple<Integer, Integer> result = findIndex(stringArr, keyString);
System.out.println("The indices are: " + result.x + ", " + result.y);
}
}
Python3
# Python code
def findIndex(stringArr, keyString):
flattenedArr = [item for sublist in stringArr for item in sublist]
try:
index = flattenedArr.index(keyString)
rows = len(stringArr)
cols = len(stringArr[0])
return index // cols, index % cols
except ValueError:
return -1, -1
stringArr = [
["a", "h", "b"],
["c", "d", "e"],
["g", "t", "r"]
]
keyString = "e"
result = findIndex(stringArr, keyString)
print("The indices are:", result[0], ",", result[1])
# This code is contributed by Utkarsh Kumar
C#
using System;
using System.Collections.Generic;
class GFG
{
static Tuple<int, int> FindIndex(List<List<string>> stringArr, string keyString)
{
List<string> flattenedArr = new List<string>();
foreach (var row in stringArr)
{
flattenedArr.AddRange(row);
}
int index = flattenedArr.FindIndex(x => x == keyString);
if (index != -1)
{
int rows = stringArr.Count;
int cols = stringArr[0].Count;
return new Tuple<int, int>(index / cols, index % cols);
}
return new Tuple<int, int>(-1, -1);
}
static void Main(string[] args)
{
List<List<string>> stringArr = new List<List<string>>
{
new List<string> { "a", "h", "b" },
new List<string> { "c", "d", "e" },
new List<string> { "g", "t", "r" }
};
string keyString = "e";
Tuple<int, int> result = FindIndex(stringArr, keyString);
Console.WriteLine("The indices are: " + result.Item1 + ", " + result.Item2);
}
}
JavaScript
// Define a class named Tuple with two generic parameters X and Y.
class Tuple {
constructor(x, y) {
this.x = x;
this.y = y;
}
}
// Define a function named findIndex that takes a 2D array (list of lists) and a key string as input.
function findIndex(stringArr, keyString) {
// Flatten the 2D array into a single array.
let flattenedArr = [];
for (let row of stringArr) {
flattenedArr = flattenedArr.concat(row);
}
// Find the index of the keyString in the flattened array.
let index = flattenedArr.indexOf(keyString);
if (index !== -1) {
// If the keyString is found, calculate the row and column indices.
let rows = stringArr.length;
let cols = stringArr[0].length;
return new Tuple(Math.floor(index / cols), index % cols);
}
// If the keyString is not found, return a Tuple with (-1, -1).
return new Tuple(-1, -1);
}
// Define the main function.
function main() {
// Create a 2D array (list of lists) named stringArr.
let stringArr = [
["a", "h", "b"],
["c", "d", "e"],
["g", "t", "r"]
];
// Define the keyString to search for.
let keyString = "e";
// Call the findIndex function to find the indices of keyString.
let result = findIndex(stringArr, keyString);
// Print the result.
console.log("The indices are: " + result.x + ", " + result.y);
}
// Call the main function to start the program.
main();
OutputThe indices are: 1, 2
Time Complexity: O(rows * cols)
Auxiliary Space: O(rows * cols)
Similar Reads
How to Get Value of Multidimensional Array in C? Prerequisite: Array in C An array is a type of data structure where we can store multiple elements of similar data types. A multidimensional array can be termed an array of arrays that stores homogeneous data in tabular form. Data in multidimensional arrays are stored in row-major order. Declaration
8 min read
How to find the index of an element in an array using PHP ? In this article, we will discuss how to find the index of an element in an array in PHP. Array indexing starts from 0 to n-1. Here we have some common approachesTable of ContentUsing array_search() FunctionUsing array_flip()Using a custom functionUsing a foreach LoopUsing array_keys FunctionUsing ar
6 min read
Find a String in given Array of Strings using Binary Search Given a sorted array of Strings arr and a string x, The task is to find the index of x in the array using the Binary Search algorithm. If x is not present, return -1.Examples:Input: arr[] = {"contribute", "geeks", "ide", "practice"}, x = "ide"Output: 2Explanation: The String x is present at index 2.
6 min read
Count of number of given string in 2D character array Given a 2-dimensional character array and a string, we need to find the given string in a 2-dimensional character array, such that individual characters can be present left to right, right to left, top to down or down to top. Examples: Input : a ={ {D,D,D,G,D,D}, {B,B,D,E,B,S}, {B,S,K,E,B,K}, {D,D,D
9 min read
Searching in Array for a given element in Julia Given an array (1D, 2D or 3D), and an element to look for in the array. If the element is present in the array, then print the position of the element in the array, else print "Element not found". In the recent updates to Julia, the developers have unified the search() and find() functions into a si
6 min read
How to Find the Position of a Number in an Array in MATLAB? Finding the position of a number in an array, which can be done using the find() function. The find() function is used to find the indices and values of the specified nonzero elements. Syntaxfind(X) Parameters: This function accepts a parameter. X: This is the specified number whose position is goin
1 min read